これが私のシナリオです:
ユーザーが私の Web サイトにログインすると、特定のユーザーの一連のタスクをキューに入れます (通常、各タスクには数百ミリ秒かかり、ユーザーごとに数百のタスクがあります)。これらのタスクはデフォルトの Celery キューに入れられ、何百ものワーカーが実行されています。バックエンドでタスクが完了すると、websockets を使用してユーザーのリアルタイムの進行状況を表示します。アクティブなユーザーが 1 人か 2 人しかいない場合、生活は良好です。
ここで、少数の同時ユーザーがサイトにログインすると、後者のユーザーは最初のユーザーの後ろにキューに入れられ、それらのユーザーのタスクは枯渇します (すべてのタスクが同じキューに送られるため)。私の考えは、公平性を確保するためにユーザーごとに動的キューを作成することです。ただし、Celery のドキュメント ( http://docs.celeryproject.org/en/latest/userguide/routing.html#defining-queues ) によると、キューを静的に定義する必要があるようです。
私のシナリオでセロリを使用するためのベスト プラクティスに関する提案はありますか?