2015-09-01 2 views
4

Я использую драйвер Selenium + PhantomJS в python. Она настраивает любит это:Connection отказался от использования PhantomJs

desired_cap = { 
     'phantomjs.page.settings.loadImages' : False, 
     'phantomjs.page.settings.resourceTimeout' : 10000, 
     'phantomjs.page.settings.userAgent' : '...' 
} 

self.driver = webdriver.PhantomJS(desired_capabilities=desired_cap) 

self.driver.set_window_size(1024, 768) 
self.driver.set_page_load_timeout(10) 

чем в цикле я прошу несколько страниц с помощью:

self.driver.get('page-url') 

Все прекрасно работает в течение 5 минут (~ 1 получить через 2 секунды), после этого времени я получаю сообщение об ошибке :

<urlopen error [Errno 111] Connection refused> 

И это проявляется не только для метода GET, но и для любого метода, называемого от self.driver. Я думаю, что подключение к объекту phantomjs по какой-то причине портится, и объект не смог отправить ему команды.

phantomjs --version 
2.0.1-development 

uname -a 
Linux wincode 3.16.0-38-generiC#52~14.04.1-Ubuntu SMP Fri May 8 09:43:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 

Все работает на локальной машине.

ответ

2

Кажется, что проблема была в memory leak of PhantomJS при загрузке изображений отключено:

'phantomjs.page.settings.loadImages' : False 

Так что, когда я включил изображения погрузочных проблема исчезла.

Смежные вопросы