我使用Python 2.7
、beanstalkd server
和beanstalkc
作为客户端库。
根据作业的大小,处理每个作业大约需要500到1500毫秒。
我有一个CCD_ 4作业,它将不断向beanstalkd队列添加作业;工人;它将在一个无限循环中运行,获取并处理作业。
例如:
def get_job(self):
while True:
job = self.beanstalk.reserve(timeout=0)
if job is None:
timeout = 10 #seconds
continue
else:
timeout = 0 #seconds
self.process_job(job)
这导致"timed out"
异常。
这是从队列中提取作业的最佳做法吗?
有人能帮我一下吗?
调用beanstalk.reserve(timeout=0)
意味着等待0秒作业可用,所以它会立即超时,除非已经有工作了调用时在队列中。如果你希望它永远不会超时,使用timeout=None
(或者省略超时参数,因为None
是默认值)。