内部:ワーカー—Pythonドキュメント
提供:Dev Guides
Celery/docs/latest/internals/worker
内部:労働者
序章
ワーカーは、コンシューマー、スケジューラー、メディエーター、タスクプールの4つの主要コンポーネントで構成されています。 これらのコンポーネントはすべて、レディキューとETAスケジュールの2つのデータ構造を使用して並行して実行されます。
データ構造
タイマー
タイマーはheapq
を使用して内部機能をスケジュールします。 これは非常に効率的で、数十万のエントリを処理できます。
コンポーネント
消費者
:pypi: `Kombu` を使用してブローカーからメッセージを受信します。
メッセージを受信すると、celery.worker.request.Request
オブジェクトに変換されます。
ETAまたはレート制限のあるタスクは timer に入力され、すぐに処理できるメッセージが実行プールに送信されます。
ETAとレート制限を一緒に使用すると、ETAの後にスケジュールされているタスクでレート制限が監視されます。
タイマー
タイマーは、クリーンアップや内部監視などの内部機能をスケジュールしますが、ETAタスクとレート制限タスクもスケジュールします。 スケジュールされたタスクETAが合格した場合、実行プールに移動されます。
TaskPool
これはわずかに変更されたmultiprocessing.Pool
です。 すべてのワーカーが常に実行されていることを確認することを除いて、ほとんど同じように機能します。 ワーカーが見つからない場合は、新しいワーカーと交換します。