Selenium Webdriver закрывается через некоторое время при использовании сельдерея - PullRequest
0 голосов
/ 25 апреля 2020

Я новичок здесь, я делаю бот WhatsApp с django, который должен работать вечно, ожидая чатов клиентов. Приложение работает нормально, когда я использую только python и запускаю скрипт.

Сценарий запускается, когда я запускаю его, нажимая кнопку в форме html, он получает предварительно запрограммированное взаимодействие из базы данных и запускает сценарий, чтобы продолжать ждать новых взаимодействий от клиентов. По этой причине я выбрал сельдерей, чтобы скрипт всегда работал в бэкэнде.

Проблема в том, что когда-нибудь проходит, он внезапно закрывает web-драйвер селена.

Я запускаю сельдерей с: celery -A WhatsappBot worker --pool=solo -l info

Я использую redis в WINDOWS

цепочка логи c приложения выглядит следующим образом:

  1. получить ввод с помощью кнопки html.
  2. получить информацию о взаимодействии из базы данных.
  3. запустить синхронный селен только для того, чтобы показать код qr, когда он сканируется, этот скрипт завершается и возвращает сеанс веб-драйвера и URL-адрес.
  4. запускает сценарий взаимодействия, дистанционно подключаясь к сеансу, полученному с предыдущего шага.

после этого, по прошествии некоторого времени, команда celery возвращает:

[2020-04-25 13:47:22,235: WARNING/MainProcess] Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000019014047D88>: Failed to establish a new connection: [WinError 10061] Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente')': /session/0d928e76eb9031ddda11b02827975de7/execute/sync
[2020-04-25 13:47:24,243: WARNING/MainProcess] Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000019014047788>: Failed to establish a new connection: [WinError 10061] Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente')': /session/0d928e76eb9031ddda11b02827975de7/execute/sync
[2020-04-25 13:47:26,246: WARNING/MainProcess] Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000019014052C08>: Failed to establish a new connection: [WinError 10061] Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente')': /session/0d928e76eb9031ddda11b02827975de7/execute/sync
[2020-04-25 13:47:28,257: ERROR/MainProcess] Task users.tasks.whatsappbott[88fec571-4fd6-4ee5-888b-34fd13d71b14] raised unexpected: MaxRetryError("HTTPConnectionPool(host='127.0.0.1', port=64060): Max retries exceeded with url: /session/0d928e76eb9031ddda11b02827975de7/execute/sync (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000019014036688>: Failed to establish a new connection: [WinError 10061] Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente'))")
Traceback (most recent call last):
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 157, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\connection.py", line 84, in create_connection
    raise err
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\connection.py", line 74, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [WinError 10061] Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente

Во время обработки вышеупомянутого исключения произошло другое исключение:

Traceback (most recent call last):
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 672, in urlopen
    chunked=chunked,
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 387, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1252, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1298, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1247, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1026, in _send_output
    self.send(msg)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 966, in send
    self.connect()
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 184, in connect
    conn = self._new_conn()
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 169, in _new_conn
    self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x0000019014036688>: Failed to establish a new connection: [WinError 10061] Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente

Во время обработки вышеупомянутого исключения произошло другое исключение:

Traceback (most recent call last):
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\celery\app\trace.py", line 385, in trace_task
    R = retval = fun(*args, **kwargs)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\celery\app\trace.py", line 648, in __protected_call__
    return self.run(*args, **kwargs)
  File "C:\Users\vmbro\Desktop\WppBot\WhatsappBot\users\tasks.py", line 318, in whatsappbott
    bot_behavour()
  File "C:\Users\vmbro\Desktop\WppBot\WhatsappBot\users\tasks.py", line 290, in bot_behavour
    last_question = analyse_answer(states[current_client_index], last_question_index,driver)
  File "C:\Users\vmbro\Desktop\WppBot\WhatsappBot\users\tasks.py", line 226, in analyse_answer
    while last_holder == get_last_dialog(driver) and max_tries>0:
  File "C:\Users\vmbro\Desktop\WppBot\WhatsappBot\users\tasks.py", line 198, in get_last_dialog
    if 'message' not in chats[i].get_attribute('class'):
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", line 141, in get_attribute
    self, name)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 636, in execute_script
    'args': converted_args})['value']
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 319, in execute
    response = self.command_executor.execute(driver_command, params)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 374, in execute
    return self._request(command_info[0], url, body=data)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 402, in _request
    resp = http.request(method, url, body=body, headers=headers)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\request.py", line 80, in request
    method, url, fields=fields, headers=headers, **urlopen_kw
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\request.py", line 171, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\poolmanager.py", line 330, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 760, in urlopen
    **response_kw
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 760, in urlopen
    **response_kw
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 760, in urlopen
    **response_kw
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 720, in urlopen
    method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
  File "C:\Users\vmbro\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\retry.py", line 436, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=64060): Max retries exceeded with url: /session/0d928e76eb9031ddda11b02827975de7/execute/sync (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000019014036688>: Failed to establish a new connection: [WinError 10061] Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente'))

Может кто-нибудь помочь мне? Я все перепробовал ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...