我正在使用beanstalkc,这是beanstalkd应用程序的python包装器。
我想要做的是让生产者把一些工作(例如:'a','b','c','d')放一次,这样消费者就可以不断地获得这些工作(例如:'a','b','c','d','a','b',...)。
在消费者中,我使用job.reserve()获得工作。我本以为解决方案就是保留作业而不删除它们,但在我运行了一些使用者进程后,我得到了一个超时错误。
我显然做错了什么,但我找不到一种方法来“重新排队”消费者使用的作业。
发布于 2012-05-23 02:33:41
我认为这可能是一个解决方案:
制片人:
queue.put('a', priority=0)消费者:
job = queue.reserve()
do something with job
new_priority = job.stats()['pri'] + 1
job.release(priority=new_priority)发布于 2012-05-23 05:47:07
为什么不在你完成一个特定的任务后,在你释放它之后,把你刚刚完成的同一个任务的另一个副本放回队列中呢?
否则,您就会试图让它做一些它不想做的事情。
https://stackoverflow.com/questions/10703596
复制相似问题