1

私は、beanstalkd アプリケーションの Python ラッパーである beanstalkc を使用しています。

私がやりたいのは、プロデューサーにいくつかのジョブ (例: 'a'、'b'、'c'、'd') を一度入れてもらい、コンシューマーが継続的にジョブを取得できるようにすることです (例: 'a' ,'b','c','d','a','b',...)。

コンシューマでは、job.reserve() でジョブを取得します。解決策は、ジョブを削除せずにジョブを予約するだけだと思っていましたが、いくつかのコンシューマー プロセスを実行した後、タイムアウト エラーが発生しました。

私は明らかに何か間違ったことをしていますが、消費者が使用するジョブを「再キューイング」する方法が見つかりませんでした。

4

2 に答える 2

2

これが解決策になると思います:

プロデューサー:

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-22T18:33:40.860 に答える
0

特定のジョブを完了したときに、それをリリースした後、完了したばかりの同じジョブの別のコピーをキューに戻すのはなぜですか?

そうでなければ、あなたはそれがするように設計されていない何かをするようにそれを手に入れようとしているでしょう。

于 2012-05-22T21:47:07.050 に答える