感谢阅读。
我使用Python 2.7
,beanstalkd server
和beanstalkc
作为客户端库。
处理每个作业大约需要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"
例外。
这是从队列中提取作业的最佳做法吗?
有人可以帮助我吗?
答案 0 :(得分:2)
调用beanstalk.reserve(timeout=0)
表示等待0秒才能使作业可用,
所以除非工作已经完成,否则它会立即超时
在它被调用的队列中。如果你想要它永远不会超时,
使用timeout=None
(或省略timeout参数,因为None
是默认值)。