0
0 комментариев

Использую следующую конструкцию:

def request():
    try:
        r = requests.get(url)
    except requests.exceptions.HTTPError as err:
        print(err)
    except requests.exceptions.ChunkedEncodingError:
        print('Server returned nothing(0 bytes). Breaking connection.')
        break
    except requests.exceptions.ConnectionError as err:
        print('Connection error!')
        break
 
q = Queue()
try:
    for i in range(len(ips)):
        t = threading.Thread(target=request)
        t.start()
except KeyboardInterrupt:
    print('Stopping...')
    sys.exit()

Что меня в этой конструкции не устраивает:

  1. Если отправлять запросы через прокси с теле while, то скрипт нельзя остановить через ctrl+c, пока не будут выполнены все запросы.
  2. Если всё-таки попытаться остановить скрипт, то вылетит исключение KeyboardInterrupt, которое обрабатывается, но почему-то исключение всё равно появляется.

Как я понимаю, мне нужно сперва остановить все процессы в queue, чтобы остановить основной процесс. Собственно, как мне это сделать? Документации по-настоящему мало.


Добавить комментарий