我有一个长期运行的python应用程序,它将定期(每30-60秒)用selenium和chrome驱动程序打开一个网页,运行一些javascript并截取屏幕截图。它在Xvfb中使用chrome运行的EC2 ubuntu实例上运行,并且大部分内容都工作正常,除了间歇性程序将挂起。它发生在以下其中一条线上:
options = Options()
options.add_argument("--disable-web-security")
options.add_argument("--webdriver-logfile=webdrive.log")
dc = DesiredCapabilities.CHROME
dc['loggingPrefs'] = {'browser': 'ALL'}
driver = webdriver.Chrome(chrome_options=options, desired_capabilities=dc)
driver.get(url);
(我没有确切的行,但我从调试语句中知道我已经介绍它介于两者之间)
不幸的是,该程序没有崩溃所以它没有任何错误消息,它只是在昨晚7点以后无休止地等待。正在运行strace -p 'python program pid'
返回:wait4(-1,
并且正在运行strace -p 'chromedriver pid'
会返回recvfrom(20,
我可以在ps axjf
中看到该进程仍在运行,它只是没有做任何事情。我有点不知道现在该做什么,有什么建议吗?
chromedriver版本:2.10.267518
Google Chrome 40.0.2214.111
Selenium(与pip一起安装):2.42.1
#https://github.com/cgoldberg/xvfbwrapper
xvfb = Xvfb(width=1920, height=1920)
xvfb.start()
----编辑----
我刚刚更新到ChromeDriver 2.14.313457
和Selenium 2.44.0
,希望这可以解决问题。我现在要打开这个。感谢你们到目前为止的建议!
----编辑----
所以服务仍然停止了。我想知道这是否是因为每次截图我关闭并重新启动google-chrome?这是否可能以某种方式导致内存泄漏?我怎么能诊断出这个?