Селениум на старте начал подвисать
Причем такой плавающий глюк. То пускается весь день нормально. То висит и все. Поставил на вторую машину. Вроде все заработало. Просыпаюсь с утра - обе тачки висят не могут пустить селениум. Ну и происходит это на:
File "/home/myname/.venv/lib/python3.11/site-packages/selenium/webdriver/common/selenium_manager.py", line 134, in run
completed_proc = subprocess.run(args, capture_output=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/subprocess.py", line 550, in run
stdout, stderr = process.communicate(input, timeout=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/subprocess.py", line 1207, in communicate
stdout, stderr = self._communicate(input, endtime, timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/subprocess.py", line 2059, in _communicate
ready = selector.select(timeout)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/selectors.py", line 415, in select
fd_event_list = self._selector.poll(timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
И вот сегодня я наконец-то смог дождаться сообщения об ошибке
Problem reading geckodriver versions: error sending request for url (https://raw.githubusercontent.com/SeleniumHQ/selenium/trunk/common/geckodriver/geckodriver-support.json): operation timed out. Using latest geckodriver version
после чего селениум нормально стартанул и заработал.
То есть получается он в одно и то же время зачем-то пытается куда-то что-то отослать чтоли? со всех тачек на которых запущен? или не может прочесть? fd_event_list это разве не file descriptor? что это вообще такое? встречался кто-то с подобным? чего еще от него можно ожидать? и как это все разузнать получше? гугл как-то не блеснул знаниями.
Ответы (1 шт):
Насколько я понял geckodriver при запуске может производить сверку версий, т.к. по указанному в сообщении об ошибке адресу находится json с версиями geckodriver.
Данный адрес был недоступен поэтому селениум и подвисал одновременно на разных машинах. Остается выяснить значение этого таймаута.