我有一个长时间运行的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? 这可能会导致内存泄漏吗? 我该如何诊断这个问题?
xvfb
。谢谢。 - alecxe