内部:ワーカー—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です。 すべてのワーカーが常に実行されていることを確認することを除いて、ほとんど同じように機能します。 ワーカーが見つからない場合は、新しいワーカーと交換します。