Почему я получаю много сообщений ConnectionResetErrors с chromedriver? - PullRequest
2 голосов
/ 17 апреля 2019

Когда я запускаю тесты на сайте django, используя селен и хромедрайвер, я получаю много сообщений ConnectionResetErrors. Полный вывод ошибок включен внизу. Обратите внимание, что тесты проходят нормально, несмотря на это - проблема заключается в потоке сообщений об исключениях в консоли. При использовании geckodriver не возникает никаких ошибок ConnectionResetEr. Если я запускаю какой-либо один тест, ошибка не возникает, но когда я запускаю все тесты, вывод консоли залит этими ошибками.

Я уже просмотрел ответы на подобные вопросы, но не смог найти ни одного подходящего решения.

Мои тестовые примеры расширяют общий класс, который обрабатывает setUp и tearDown. Этот общий класс в свою очередь расширяет StaticLiveServerTestCase.

Соответствующая часть метода setUp:

self.chromedriver = chrome.webdriver.WebDriver(executable_path=r"chromedriver.exe")
self.chromedriver.implicitly_wait(10)

Никакие другие строки кода не влияют на конфигурацию объекта self.chromedriver.

Я пытался вызвать self.chromedriver.quit() в методе tearDown, но, похоже, это вызывает больше сообщений об ошибках того же типа. Это также вызывает сообщение об ошибке при запуске одного теста.

Что вызывает поток ConnectionResetErrors?

Версии:

> python -c "import selenium; print(selenium.__version__)"
3.141.0

Хром: 73.0.3683.103

> chromedriver --version
ChromeDriver 73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72)

ОС Windows 10, сборка 16299.1087

> python --version
Python 3.7.2


> django-admin --version
2.1.7

Редактировать: Мне не удалось определить точную причину проблемы, но, похоже, это было связано с использованием chromedriver и Django LiveServerTestCase. На данный момент я прекратил использовать LiveServerTestCase. Вместо этого я использую Python UnitTest и отдельно выполняю настройку тестовой базы данных и запуск сервера Django wsgi.

Полный вывод консоли для одного теста с явным завершением:

> py manage.py test main.tests.test_pages.test_request_help
Creating test database for alias 'default'...
System check identified no issues (0 silenced).

DevTools listening on ws://127.0.0.1:54845/devtools/browser/1c099597-7692-4fe8-b463-783e501f1853
Testing request help page using driver chrome
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 54863)
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 171, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
----------------------------------------
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 54873)
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 169, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
----------------------------------------
----------------------------------------
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 54862)
Exception happened during processing of request from ('127.0.0.1', 54872)
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 54871)
Traceback (most recent call last):
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 169, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 169, in handle
    self.handle_one_request()
----------------------------------------
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
----------------------------------------
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 171, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
----------------------------------------
.
----------------------------------------------------------------------
Ran 1 test in 9.580s

OK
Destroying test database for alias 'default'...

Полный вывод для всех тестов без явного завершения:

> py manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).

DevTools listening on ws://127.0.0.1:55279/devtools/browser/78eed288-e607-442a-8657-4439409d5692
Testing about page using driver chrome
.
DevTools listening on ws://127.0.0.1:55309/devtools/browser/2190ae47-c711-41fa-922f-9115d50065fd
Testing home page using driver chrome
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 55297)
----------------------------------------
Traceback (most recent call last):
Exception happened during processing of request from ('127.0.0.1', 55294)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 169, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 171, in handle
    self.handle_one_request()
----------------------------------------
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
----------------------------------------
.
DevTools listening on ws://127.0.0.1:55354/devtools/browser/e94aab0a-fb6b-4950-b8b9-ccee2c601cfa
Testing home page using driver chrome
.
DevTools listening on ws://127.0.0.1:55380/devtools/browser/d82461dc-4436-4d81-b21e-4091e9412225
Testing home page using driver chrome
.
DevTools listening on ws://127.0.0.1:55410/devtools/browser/e7b13108-1259-4094-a8be-7963e19d549d
Testing navbar using driver chrome
.
DevTools listening on ws://127.0.0.1:55444/devtools/browser/941ec710-590f-49f1-9aca-912dd453ae8e
Testing request help page using driver chrome
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 55370)
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
----------------------------------------
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 55372)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
Exception happened during processing of request from ('127.0.0.1', 55368)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 169, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
----------------------------------------
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 169, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 171, in handle
    self.handle_one_request()
----------------------------------------
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
----------------------------------------
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 55395)
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 171, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
----------------------------------------
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 55429)
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 169, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
----------------------------------------
----------------------------------------
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 55425)
Exception happened during processing of request from ('127.0.0.1', 55430)
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 55428)
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
Traceback (most recent call last):
Traceback (most recent call last):
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 650, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 169, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 169, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
----------------------------------------
----------------------------------------
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socketserver.py", line 720, in __init__
    self.handle()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 171, in handle
    self.handle_one_request()
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\servers\basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Users\[redacted]\AppData\Local\Programs\Python\Python37-32\lib\socket.py", line 589, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
----------------------------------------
.
----------------------------------------------------------------------
Ran 6 tests in 38.146s

OK
Destroying test database for alias 'default'...

1 Ответ

1 голос
/ 18 апреля 2019

Существующее соединение было принудительно закрыто удаленным хостом

Это сообщение об ошибке означает, что «здесь уже есть одно соединение, и вы пытаетесь открыть другое.». Возможно, одно из ваших соединений осталось живым или застряло.

Вы должны проанализировать свой код на предмет этой проблемы в режиме отладки и попытаться выяснить, какие области вашего кода это делают. Найдя его, попробуйте дождаться закрытия открытых соединений.

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