python-rq worker自动关闭

python-rq worker closes automatically

我正在实施 python-rq 以在队列中传递域并使用 Beautiful Soup 抓取它。所以我 运行 多个工人来完成工作。截至目前,我启动了 22 个工人,所有 22 个工人都在 rq 仪表板中注册。但是一段时间后,工作人员自行停止并且没有显示在仪表板中。但在 webmin 中,它将所有工作人员显示为 运行。爬行速度也下降了,即工人不是 运行。我尝试 运行 工人使用 supervisor 和 nohup。在这两种情况下,工人都会自行停止。

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

除此之外,每当从 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(s),下一个域就会出列。但是对于某些域来说,urls 的数量不足以终止条件(比如只有 1 或 2 个 urls)。

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