8

Celery で次のシナリオを実装しようとしています: (同じ) 長時間実行タスクの 2 つのキュー、1 つは「通常」優先度、もう 1 つは「アイドル」優先度。

ワーカーに両方のキューを監視させ、最初に「通常の」優先度キューからタスクを取得し、空の場合は「アイドル」優先度からタスクを取得します。

私の質問は: ワーカーがタスク キューをチェックする順序を保証することは可能ですか? また、これは優先事項を実装するための正しいアプローチですか?

背景: タスクは ffmpeg トランスコーディング ジョブを実行しています。「通常」の優先度は、入ってくる新しいビデオ (できるだけ早くトランスコードする必要があります) であり、「アイドル」の優先度は、古い (40.000 以上のビデオ) アーカイブを更新された形式設定に再トランスコードするタスクです。マルチサーバー タスクのディスパッチに使用できるサーバーがいくつかありません。

4

2 に答える 2

1

アイドル状態のワーカーはシステム リソースをあまり消費しないという理論に基づいて、2 番目の交換、キューの 2 番目のセット、およびワーカーの 2 番目のセットで 2 つの優先順位を実装しました。私はそのような集中的な作業プロセスを持っていないので、最初のセットがアクティブなときに 2 番目のセットのワーカーを調整しませんが、UNIX の renice コマンドがこれに対して機能する可能性があります。

ワーカーが作業要求を受信するだけでは不十分であり、制御キューからトークンを取得する必要があるように、おそらく制御キューを使用して何かを行うこともできます。次に、少数のトークンをアイドル コントロール キューに吐き出しますが、より多くのトークンを通常のコントロール キューに吐き出します。

于 2012-01-29T07:03:10.220 に答える