Не запускается большое количество инстансов Chrome на виртуальном сервере

chromedriver
python
Теги: #<Tag:0x00007fedba98a9b8> #<Tag:0x00007fedba98a7d8>

#1

Привет!

Есть необходимость запускать не для тестов много инстансов Chrome (с помощью Chromedriver) одновременно. Для этого использую Python и Celery. На локальном компьютере все работает без проблем, а вот на сервере (Win7 и Win10) - открывается только 7 инстансов Chrome, остальные - вылетают по ошибке при попытке запустить очередной инстанс:

ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Полный текст ошибки:

[2017-04-18 08:14:43,988: ERROR/MainProcess] Task bid[7fce5818-41b5-4ff5-9ae2-41913bd88f43] raised unexpected: ConnectionRefusedError(10061, 'No connection could be made because the target machine actively refused it', None, 10061, None)
Traceback (most recent call last):
  File "E:\env\bot\lib\site-packages\celery\app\trace.py", line 240, in trace_task
    R = retval = fun(*args, **kwargs)
  File "E:\env\bot\lib\site-packages\celery\app\trace.py", line 438, in _protected_call_
    return self.run(*args, **kwargs)
  File "E:\bot\app.py", line 100, in bid
    home_page.open()
  File "E:\env\bot\lib\site-packages\webium\base_page.py", line 57, in open
    self._driver.get(self.url)
  File "E:\env\bot\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 248, in get
    self.execute(Command.GET, {'url': url})
  File "E:\env\bot\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 234, in execute
    response = self.command_executor.execute(driver_command, params)
  File "E:\env\bot\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 407, in execute
    return self._request(command_info[0], url, body=data)
  File "E:\env\bot\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 438, in _request
    self._conn.request(method, parsed_url.path, body, headers)
  File "C:\Python35-32\Lib\http\client.py", line 1106, in request
    self._send_request(method, url, body, headers)
  File "C:\Python35-32\Lib\http\client.py", line 1151, in _send_request
    self.endheaders(body)
  File "C:\Python35-32\Lib\http\client.py", line 1102, in endheaders
    self._send_output(message_body)
  File "C:\Python35-32\Lib\http\client.py", line 934, in _send_output
    self.send(msg)
  File "C:\Python35-32\Lib\http\client.py", line 877, in send
    self.connect()
  File "C:\Python35-32\Lib\http\client.py", line 849, in connect
    (self.host,self.port), self.timeout, self.source_address)
  File "C:\Python35-32\Lib\socket.py", line 711, in create_connection
    raise err
  File "C:\Python35-32\Lib\socket.py", line 702, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Подскажите, кто сталкивался, в чем может быть причина? Может какие-то отличия в реестре или ограничения самой виртуальной машины? Как это побороть?

Спасибо


(Yaroslav Pernerovskyy) #2

А как вы создаете ноду (с какими параметрами) на удаленной машине?


#3

Если вы про Selenium Grid, то речь не о нем.

def set_driver():
    chrome_options = Options()
    chrome_options.add_extension('extension_3_0_0_14.crx')
    return webdriver.Chrome(chrome_options=chrome_options)

Вот так я создаю инстансы, просто запускаю несколько раз с помощью Celery.


(Yaroslav Pernerovskyy) #4

Тоесть вы копируете все на сервер и там запускаете локально, точно так же как и у себя на рабочей машине?


#5

Да, все именно так. Никаких изменений.

Сперва грешил на Win7, но проапдейтил до Win10, чтобы была, как у на компе - без толку.


(Yaroslav Pernerovskyy) #6

А это гуглили уже ?


#7

Первым делом. Везде про соккеты пишут.

Да и мне кажется, что дело в соккетах, но куда копать - без малейшего. То ли время более долгое соккет занят, то ли ограничение какое-то есть.


(Yaroslav Pernerovskyy) #8

Надо подшаманить настройки самой винды, к сожалению не скажу какие, так как даже попробовать негде. Но на стековерфлоу кажись были рецепты.


#9

Не смог найти, поэтому и написал сюда