我使用带有beanstalkc的Python 2.7,beanstalkd server作为客户端库。
根据作业的大小,处理每个作业大约需要500到1500毫秒。
我有一个cron作业,它会不断地向beanstalkd队列中添加作业,还有一个"worker“,它会在无限循环中运行,获取作业并处理它们。
例如:
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"异常。
这是从队列中提取作业的最佳实践吗?
有没有人能帮帮我?
发布于 2012-07-20 06:57:07
调用beanstalk.reserve(timeout=0)意味着等待作业变为可用状态的时间为0秒,因此它将立即超时,除非调用时作业已经在队列中。如果您希望它永远不会超时,可以使用timeout=None (或者省略timeout参数,因为None是缺省的)。
https://stackoverflow.com/questions/11567431
复制相似问题