2017-12-31 27 views
0

セロリの基本的な理解とそれがどのように機能しているのですか?私の現在のプロジェクトでは、タスクの優先順位付けが必要になりました。セロリのキューにAとBという2種類のタスクがある場合、どのタスクがキューの先頭にあるかにかかわらず、セロリはタスクBに優先順位を付けるべきです。それを行う方法はありますか?セロリの待ち行列/タスクの優先順位付け

キューの優先順位付けも私にとって問題ありません。つまり、high_priority_queueとlow_priority_queueという2つの異なるキューを作ることができ、セロリはまずhigh_priority_queueでタスクを実行し、次にlow_priority_queueに行くべきです。

私は、2つのキューに異なるワーカーを割り当てることもできますが、これは両方のキューのタスクが同時に実行されていることを意味します。最初に実行されるhigh_priority_queueのタスクが必要です。何か案は?

おかげ

答えて

0

は、通常、複数のキューとmutlipleワーカーアプローチが推奨されていますが指摘したように、低優先度キュー/労働者は、次の優先順位の高い労働者に同時に働くことになります。これは興味深い設定です。小さなタスクがたくさんあり、すぐに実行したい場合は優先度の高いキューに入れ、長いタスクを優先度の低いキューにプッシュします。優先度の高い作業者に、より多くのリソース(またはより良いマシン)を提供するだけの設定を行うこともできます。

あなたはapply_asyncpriorityパラメータを提案するつもりです。 a different question I answered recentlyで指摘されているように、少しのセットアップが必要です。特定のブローカーでのみ機能します。 (RabbitMQの場合、バージョン3.5.0以降で動作します)キューにx-max-priorityを設定し、参照されている回答に指摘されている追加の設定を行った後は、単に次のような優先順位をつけることができます:

your_task.apply_async(queue="your_queue_that_can_handle_priority", priority=10) 
関連する問題