afo*_*bes 5 python selenium selenium-firefoxdriver
我用 python (3.6) 和 selenium、firefox web 驱动程序创建了一个 web scraper。我已经设置了一个 cronjob 每隔几分钟运行这个抓取工具,它似乎一切正常,除了随着时间的推移(比如几天),我的 Ubuntu VPS(8GB RAM,Ubuntu 18.04.4)上的内存被填满起来然后崩溃了。
当我检查 HTOP 时,我可以看到很多(例如数百个)firefox 进程,例如“/usr/lib/firefox -marionette”和“/usr/lib/firefox -contentproc”,全部占用大约 3 或 4mb 内存每个。
我已经放了一个
browser.stop_client()
browser.close()
browser.quit()
在使用网络驱动程序的每个函数中,但我怀疑脚本有时会在遇到错误时使网络驱动程序保持打开状态,并且没有正确关闭它们,并且这些 Firefox 进程只会累积,直到我的系统崩溃。
我正在努力寻找其根本原因,但与此同时,是否有一种快速方法可以终止/清理所有这些进程?
例如,一个杀死所有匹配进程(超过 10 分钟)的 cronjob?
谢谢。
小智 3
我怀疑该脚本有时会在遇到错误时使网络驱动程序保持打开状态,并且不会正确关闭它们
这很可能是问题所在。我们通过使用try except finally块来解决此问题。
browser = webdriver.Firefox()
try:
# Your code
except Exception as e:
# Log or print error
finally:
browser.close()
browser.quit()
Run Code Online (Sandbox Code Playgroud)
如果您仍然遇到同样的问题,您可以按照此答案或Ubuntu 的此答案强制终止驱动程序。
import os
os.system("taskkill /im geckodriver.exe /f")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2199 次 |
| 最近记录: |