0

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

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

除此之外,每当一个工作人员从 rq 仪表板中注销时,失败的计数就会增加。我不明白为什么?

请帮我解决一下这个。谢谢你

4

1 回答 1

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

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

于 2016-06-29T09:59:05.980 回答