我正在实现python rq,以便在队列中传递域并使用beautiful soup对其进行清理。所以我要多个工人来完成这项工作。截至目前,我已经有22名员工,所有22名员工都已在RQ仪表板中注册。但一段时间后,工作人员会自行停止,不会显示在仪表板中。但在webmin中,它显示所有工人都在运行。爬行的速度也降低了,也就是说,工人们没有跑。我试着用主管和Nohup来管理工人。在这两种情况下,工人们都是自己停下来的。
这是什么原因?为什么工人会自己停下来?在一台服务器上我们可以启动多少个工人?
除此之外,每当一个worker从rq仪表板注销时,失败的计数就会增加。我不明白为什么?
请帮帮我。谢谢您

最佳答案

好吧,我找到问题了。是因为工人超时。

try:
  --my code goes here--
except Exception, ex:
  self.error += 1
  with open("error.txt", "a") as myfile:
     myfile.write('\n%s' % sys.exc_info()[0] + "{}".format(self.url))
  pass

因此,根据我的代码,如果从每个域获取200个url,则下一个域将退出队列。但是对于某些域,没有足够的url来终止条件(例如只有1或2个url)。
因为代码捕获所有异常并附加到error.txt文件。甚至rq超时异常rq.timeouts.JobTimeoutException也被捕获并附加到文件中。从而使工人等待x的时间,从而导致工人的解雇。

关于python-2.7 - python-rq worker自动关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37982703/

10-14 09:04