パラレルPythonフレームワークCeleryの構成方法


1、Configuration
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を参照して、ワークが何をしているかを監視できます.