パラレルPythonフレームワークCeleryの構成方法
2612 ワード
1、Configuration
Celeryは、consumerツールとしてあまり操作する必要はありません.入力チャネルと出力チャネルがあり、入力チャネルを介してbroker(AMQPサービスチャネルなど)に接続されているか、出力チャネルを介して結果に接続されているbackend(結果を取得するために必要ではなく、一方向にタスクを配布する操作があるため)があります.これらの制御は、いくつかの構成パラメータを作成することによって完了します.
デフォルトの構成では、ほとんどのシーンで十分ですが、独自の設定が必要な場合が多いです.構成可能なオプションを熟知しているのは良いアイデアです.ここでは参考にします.コンフィギュレーションand defaultsです.
構成はアプリケーションで直接設定したり、モジュールを構成したりすることができます(特別なフォーマットではなくPythonファイルでもあり、いいアイデアですね!).タスクデータのシーケンス化の例は、
2、プロファイルの使用
大きなプロジェクトに対して特定の構成モジュールを使用することは良いアイデアであり、特に周期的なタスクやタスクルーティングなどのパラメータに対しては、ハードコーディングの方法は推奨されません.また、コンフィギュレーション・ファイルは、一元化された管理、移行、導入を容易にし、コンフィギュレーション・エラーによる問題を軽減するために、センター・ストレージ領域に保存することが望ましい.
Celeryの実行例に指定されたプロファイルを使用するように伝え、
このモジュールは常に「
この構成モジュール
この構成パラメータが正しく、構文エラーがないことを確認するには、次のようにimportというモジュールを使用します.
完全な構成パラメータについては、「コンフィギュレーションand defaults」を参照してください.
次に、プロファイルの強力な機能を示します.タスクのルーティングについて、misbehavingを特定のキューに配置します.
処理の頻度を設定できます.次の方法では、1分に10個のタスクしか処理できません.
RabbitMQまたはRedisをbrokerとして使用する場合、このrate limitは実行時に設定することもできます.
タスクのルーティングの詳細については、ここRouting Tasks、設定パラメータ
Celeryは、consumerツールとしてあまり操作する必要はありません.入力チャネルと出力チャネルがあり、入力チャネルを介してbroker(AMQPサービスチャネルなど)に接続されているか、出力チャネルを介して結果に接続されているbackend(結果を取得するために必要ではなく、一方向にタスクを配布する操作があるため)があります.これらの制御は、いくつかの構成パラメータを作成することによって完了します.
デフォルトの構成では、ほとんどのシーンで十分ですが、独自の設定が必要な場合が多いです.構成可能なオプションを熟知しているのは良いアイデアです.ここでは参考にします.コンフィギュレーションand defaultsです.
構成はアプリケーションで直接設定したり、モジュールを構成したりすることができます(特別なフォーマットではなくPythonファイルでもあり、いいアイデアですね!).タスクデータのシーケンス化の例は、
CELERY_TASK_SERIALIZER
です.app.conf.CELERY_TASK_SERIALIZER = 'json'
, update :
app.conf.update(
CELERY_TASK_SERIALIZER='json',
CELERY_ACCEPT_CONTENT=['json'], # Ignore other content
CELERY_RESULT_SERIALIZER='json',
CELERY_TIMEZONE='Europe/Oslo',
CELERY_ENABLE_UTC=True,)
2、プロファイルの使用
大きなプロジェクトに対して特定の構成モジュールを使用することは良いアイデアであり、特に周期的なタスクやタスクルーティングなどのパラメータに対しては、ハードコーディングの方法は推奨されません.また、コンフィギュレーション・ファイルは、一元化された管理、移行、導入を容易にし、コンフィギュレーション・エラーによる問題を軽減するために、センター・ストレージ領域に保存することが望ましい.
Celeryの実行例に指定されたプロファイルを使用するように伝え、
app.config_from_object()
メソッドを呼び出します.app.config_from_object('celeryconfig')
このモジュールは常に「
celeryconfig
」と命名されていますが、これはPythonモジュールでもあるため、他の名前を使用することができます.この構成モジュール
celeryconfig.py
は、Pythonが見つけることができる呼び出しパスの中で、このように見える必要があります.celeryconfig.py
: BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT=['json']
CELERY_TIMEZONE = 'Europe/Oslo'
CELERY_ENABLE_UTC = True
この構成パラメータが正しく、構文エラーがないことを確認するには、次のようにimportというモジュールを使用します.
$ python -m celeryconfig
完全な構成パラメータについては、「コンフィギュレーションand defaults」を参照してください.
次に、プロファイルの強力な機能を示します.タスクのルーティングについて、misbehavingを特定のキューに配置します.
celeryconfig.py
: CELERY_ROUTES = {
'tasks.add': 'low-priority',}
処理の頻度を設定できます.次の方法では、1分に10個のタスクしか処理できません.
celeryconfig.py
: CELERY_ANNOTATIONS = {
'tasks.add': {'rate_limit': '10/m'}}
RabbitMQまたはRedisをbrokerとして使用する場合、このrate limitは実行時に設定することもできます.
$ celery -A tasks control rate_limit tasks.add 10/m
[email protected]: OK
new rate limit set successfully
タスクのルーティングの詳細については、ここRouting Tasks、設定パラメータ
CELERY_ANNOTATIONS
、またはMonitoring and Management Guideを参照して、ワークが何をしているかを監視できます.