2

システム全体でのみ並列実行できるサブプロセス呼び出しを行うセロリ タスクがあります。より良い解決策を見つけ出す一方で、単一のワーカーで連続して実行されるタスクを実行できるようにする必要があります。

現在タスクを実行しているサーバーを追跡するテーブルを作成し、それが完了するのを待ってから将来のタスクを実行できることはわかっていますが、もっと良い方法があるはずです。私はセロリのドキュメントをかなり詳しく調べましたが、rabbitmq のドキュメントを簡単に見ても役に立ちませんでした。

前述のテクノロジーのいくつかの隠された機能にフックする、この問題に対するエレガントな解決策を思いついた人はいますか?

4

1 に答える 1

2

すべてのサーバーに共通のデータベースを使用するデータベースキャッシュをdjangoでセットアップする場合、一度に1つのタスクを実行するためにこのセロリークックブックソリューションを実装できます。変数を使用する代わりにlock_id、定数を使用してください。

タスクを実行しているワーカーがロックを使用できない場合は、retryを呼び出して、タスクをキューに戻します。

于 2012-08-22T08:08:48.420 に答える