python-rq worker自动关闭

时间:2016-06-23 05:02:43

标签: python-2.7 redis python-rq

我正在实现python-rq来传递队列中的域并使用Beautiful Soup进行抓取。所以我正在运行多个工人来完成工作。到目前为止,我创办了22名工人,所有22名工人都在rq仪表板上注册。但过了一段时间后,工作人员自行停止并且没有显示在仪表板中。但在webmin中,它将所有工作人员显示为正在运行。爬行的速度也降低了,即工人没有跑步。我尝试使用主管和nohup来运行工作人员。在这两种情况下,工人自行停止。

这是什么原因?工人为什么单独停下来?我们可以在一台服务器上启动多少工人?

除此之外,无论何时从rq仪表板取消注册工作人员,失败的计数都会增加。我不明白为什么?

请帮我解决这个问题。谢谢

1 个答案:

答案 0 :(得分:0)

好的,我发现了问题。这是因为工人超时。

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,则下一个域将出列。但是对于某些域名,终止条件的网址数量不足(例如只有1或2个网址)。

由于代码捕获了所有异常并附加到error.txt文件。甚至rq超时异常rq.timeouts.JobTimeoutException也被捕获并附加到文件中。从而使工人等待x一段时间,这导致工人终止。

相关问题