Python / Celery / Selenium连续任务(避免重新打开浏览器)

时间:2016-05-06 14:38:47

标签: python selenium celery

我对selenium的最大问题是浏览器的重新打开时间很长(每隔几分钟使用它一次)。我也使用代理并使用python的线程运行多个浏览器 - 所有开始/停止每隔几分钟(当新工作到来时)

线程也意味着只使用了1个CPU并且性能受损。

我一直在考虑开始使用芹菜(开箱即用的多核支持)并让工作人员(不同的代理/浏览器)无限期地运行(同时循环),开放的selenium浏览器实例等待获取精确的网址 - 通过像redis这样的东西来提取。

用芹菜来运行这样的连续任务是个好主意吗?有没有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

无限期地保持开放的硒实例永远不是一个好主意, 最佳做法是重新开启每项任务。

所以对你提问,在我看来这不是一个好主意。

让我为您提供另一种架构。

使用Docker运行您的selenium机器,
基本上创建selenium-grid(谷歌link中的第一个结果) 使用Docker

一旦设置正确,任务将变得简单,多处理将并行的所有作业发送到您的硒中心, 它们将根据您的需要同时在多个容器上运行 一旦工作完成,您可以在下一个周期中销毁容器并重新开始。

使用docker还可以让您轻松扩展操作