私はcelery 4
とRabbitMQ
をブローカーとして使用しています。私はQueue
(サイズ== 200)を制限しています。ブローカキューがいっぱいのときのPython Celery task.delay()
for i in range(200):
tasks.delay(i)
私< =サイズの範囲ならばそれは動作します。私の主なコードは次のようになります。私はこのような何かを呼び出す場合:
for i in range(2000):
tasks.delay(i)
そして、サイズ制限は200ですが、Queue
がいっぱいになり、タスクの残りの部分はスキップされます。
誰でもこの状況を処理する方法を教えてください。私はQueue
が無料になり、insert
別の仕事まで待つ必要があります。
ありがとうございました
完璧なおかげで、私はredisを使うと同じ問題が起こるのですか?キューが空きになるまで遅延が待っています。 – wilima
私はレディスは少し違うと思います。 Redisはキー/バリューデータベースなので、RabbitMQというキューの概念は実際にはありません。つまり、Redisにはキュー制限はありませんが、Reisには、Redisに割り当てるメモリおよび/またはディスク領域の上限があります。 これはセロリがスケーリングに非常に優れているため、必要に応じてさらに多くの作業者を追加できるからです。希望がこれを助ける – xirdneh
@wilima、btw。答えがあなたを助けてくれたら。それを正解とマークできますか?ありがとう。 – xirdneh