如何清理所有Selenium Firefox进程

问题描述 投票:1回答:1

我已经使用python(3.6)和selenium,firefox网络驱动程序创建了一个网络抓取工具。我设置了一个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()

在使用Web驱动程序的每个函数中,但我怀疑脚本有时会在遇到错误时使Web驱动程序处于打开状态,而无法正确关闭它们,并且这些firefox进程会不断累积,直到系统崩溃为止。

我正在努力寻找根本原因,但与此同时,有没有一种快速的方法可以杀死/清理所有这些过程?

例如杀死所有匹配进程(超过10分钟)的cronjob?

谢谢。

python selenium selenium-firefoxdriver
1个回答
0
投票

我怀疑该脚本有时会在遇到错误时使Web驱动程序处于打开状态,而不能正确关闭它们

这很可能是问题所在。我们使用try except finally块解决了此问题。

browser = webdriver.Firefox()
try:
    # Your code
except Exception as e:
    # Log or print error
finally:
    browser.close()
    browser.quit()

如果仍然遇到相同的问题,则可以按照此answer或Ubuntu的answer强制终止驱动程序。

import os
os.system("taskkill /im geckodriver.exe /f")
© www.soinside.com 2019 - 2024. All rights reserved.