豆茎超时问题



我在Python中使用beanstalkc进行程序的排队过程,该程序必须解析URL列表。因此,我在 beanstalk 中使用超时来避免任何 URL 消耗大量时间。但即使在使用它之后,我的进程也不会在限制内超时,并且需要花费大量时间来解析几个 URL。我正在使用以下代码:

for seed in seedlist:
    print 'Put data: %s' % seed
    bean.put(seed,ttr =5)
while True: 
    job = bean.reserve() 
    spider.spider(job.body)
    print 'Got data: %s' % job.body

我认为您误解了 beanstalk 的 TTR 超时的目的。引用豆茎常见问题解答:

TTR 如何工作

TTR 仅适用于处于保留状态的作业。在该事件中,计时器(在作业统计信息中称为"剩余时间"(从作业的 TTR 开始倒计时。

  • 如果计时器达到零,作业将放回就绪队列中。
  • 如果在计时器用完之前埋没、删除或释放作业,则计时器将不复存在。
  • 如果在计时器达到零之前"触摸"作业,则计时器将从 TTR 开始倒计时。

(未预留作业的作业统计信息仍包含"剩余时间"条目,但其值毫无意义。

因此,TTR 无法帮助您"避免任何 URL 消耗大量时间"。它不会神奇地杀死您的工作进程。它所做的只是 beanstalkd 将作业放回队列中,如果工作线程在给定的时间跨度 (TTR( 后未将作业标记为已完成。

相关内容

  • 没有找到相关文章

最新更新