硒铬河挂?

2024-06-28 21:36:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个运行时间很长的python应用程序,它会定期(每隔30-60秒)打开一个带有selenium和chrome驱动程序的网页,运行一些javascript并截图。它运行在一个EC2 ubuntu实例上,Xvfb中有chrome,大部分情况下一切正常,只是程序会间歇性挂起。它发生在其中一条线上:

    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

谷歌浏览器40.0.2214.111

硒(与pip一起安装):2.42.1

#https://github.com/cgoldberg/xvfbwrapper
xvfb = Xvfb(width=1920, height=1920)
xvfb.start()

----编辑----

我刚刚更新到ChromeDriver 2.14.313457Selenium 2.44.0,希望这可以解决问题。我暂时不谈这个。谢谢你们的建议!

----编辑----

所以服务还是挂了。我想知道这是否是因为我关闭并重新启动谷歌浏览器的每一个截图?这可能会导致内存泄漏吗?我怎么诊断?


Tags: 程序adddriver浏览器chromedcargumentpid
2条回答

我遇到了一个类似的问题,找到了答案here,并在博客上讨论了这个问题。设置环境变量DBUS_SESSION_BUS_ADDRESS=/dev/null对我有效,无需一直重新启动Xvfb。

我从未发现导致这个问题的具体代码片段,但是用每个驱动程序负载创建一个新的Xvfb实例似乎已经解决了这个问题。也许硒和Xvfb之间的交互中有内存泄漏?不管怎样,把它标记为关闭。

相关问题 更多 >