我正在使用beanstalkc python包裝beanstalkd應用程序。beanstalkd上的循環隊列
我想要做的是讓製片人做一些工作(例如:'a','b','c','d')一次,並且消費者可以連續獲得工作。 :a,b,c,d,a,b,...)。
在消費者中,我用job.reserve()獲得了工作。我認爲解決方案只是保留作業而不刪除它們,但是在運行一些消費者流程後,我得到了TIMEOUT ERROR。
我明顯在做錯事,但我找不到一種方法來重新排列消費者使用的工作。
我正在使用beanstalkc python包裝beanstalkd應用程序。beanstalkd上的循環隊列
我想要做的是讓製片人做一些工作(例如:'a','b','c','d')一次,並且消費者可以連續獲得工作。 :a,b,c,d,a,b,...)。
在消費者中,我用job.reserve()獲得了工作。我認爲解決方案只是保留作業而不刪除它們,但是在運行一些消費者流程後,我得到了TIMEOUT ERROR。
我明顯在做錯事,但我找不到一種方法來重新排列消費者使用的工作。
我認爲這可能是一個解決方案:
生產:
消費者queue.put('a', priority=0)
:
爲什麼不乾脆,當你完成某項工作,以後你job = queue.reserve()
do something with job
new_priority = job.stats()['pri'] + 1
job.release(priority=new_priority)
已經發布了它,把你剛剛完成的同一份工作的另一份拷貝放回隊列中?
否則,你會試圖讓它去做一些它沒有設計的事情。
是的,這是我正在考慮的事情。但是,如何阻止經常性工作再次運行。假設我必須每10分鐘計算一次數字,但用戶決定離開。你將如何從隊列中刪除工作? – WarmWaffles