Celery-定期的なタスク

1.セロリそれは何であるビート?

  セロリ、ビートは、定期的なタスクに使用可能な作業手順を実行するタスクを起動し、クラスタノードによってスケジューラです。

  デフォルトでは、エントリがされた設定で取得したが、例えば、エントリはSQLデータベースに格納され、独自のストレージを使用することができます。beat_schedule

  私たちは、それ以外の場合は、最終的には反復的な作業につながる、唯一のスケジューラがタスクのスケジュールを実行することを確認する必要があります。集中型のアプローチを使用して同期をスケジュールすることを意味し、サービスはロックを使用せずに実行することができます。

 

2.タスクを破ったセロリを追加

   定期的にタスクを起動するには、リスト・ビート・スケジュールにエントリを追加する必要があります

tasks.py

セロリのインポートセロリ

アプリ =セロリ(' タスク'、ブローカー= ' ://セロリ:[email protected] 5672 / celery_vhost pyamqp '、バックエンド= ' Redisの:// localhostの6379/0 ' #のアプリ=セロリ( 'タスク'、バックエンド= 'のRedis:// localhostを'、ブローカ= 'pyamqp://')

app.conf.update(
    task_serializer = ' JSON ' 
    accept_content = [ ' JSON ' ]、  は、他のコンテンツを無視 
    = result_serializerを"JSON "
    タイムゾーン = ' アジア/上海' 
    enable_utc = Trueの場合、

@ app.on_after_configure.connect 
デフ setup_periodic_tasks(送信者、** kwargsから):
    テスト( 'こんにちは')、10秒ごとに呼び出します。
    sender.add_periodic_task(10.0、test.s(' こんにちは')、名前= ' すべての10を追加' 
    
    #の呼び出しは、(2,2)、30秒ごとに追加 
    sender.add_periodic_task(30.0、add.s(2,2)、有効期限が切れます= 10 

    #は7:30ので毎週月曜日の朝に実行します
    (sender.add_periodic_task 
        のcrontab(時間 = 7、分= 30、DAY_OF_WEEK = 1 )、
        test.s(' ハッピーマンデー!' )、 

app.taskの@ 
デフテスト(引数):
     プリント(引数)

@ app.task 
デフ追加(X、 Y):
     リターン X + Y

 

3.セロリビートを有効にします

タスクは、ローカル・データベース・ファイルに格納された最後の時間を実行するために必要なビート(デフォルトで名付けられcelerybeat-スケジュール)、

だから、カレントディレクトリに書き込むためにアクセスする必要がある、またはファイルのカスタム場所を指定することができます。

セロリ-Aタスクは、-sの/ var /実行/セロリ/ celerybeatスケジュールを打ちます

そして、別の端末で労働者を有効にします 

セロリ-Aタスクワーカー-l情報

あなたはログを見ることができます:

【2019年10月24日14:45:53448:INFO / ForkPoolWorker-4]:4タスクtasks.add [e028900c-f2a3-468e-8cb8-4ae72d0e77fe]は0.0020012762397527695sに成功した
[2019年10月24日14:46:03370 :INFO / MainProcess]受信タスク:tasks.test [0635b276-19c9-4d76-9941-dbe9e7320a7f]
[2019年10月24日14:46:03372:WARNING / ForkPoolWorker-6]こんにちは
[2019年10月24日午前14時46 :03374:INFO / ForkPoolWorker-6]タスクtasks.test [0635b276-19c9-4d76-9941-dbe9e7320a7f]は0.0021341098472476006sに成功しました:なし
[2019年10月24日14:46:13371:INFO / MainProcess]受信タスク:タスク.TEST [afcfa84c-3a3b-48bf-9191-59ea55b08eea]
[2019年10月24日14:46:13373:WARNING / ForkPoolWorker-8]こんにちは
[2019年10月24日14:46:13375:INFO / ForkPoolWorker-8]タスクtasks.testは[afcfa84c-3a3b-48bf-9191-59ea55b08eea] 0.002273786813020706sに成功しました:なし

 

また、有効にする労働者-B オプションがしますビート埋め込まれた労働者に、

:あなたは非常に便利であるワーカーノード、以上実行しませんが、それは一般的に使用されていない、と本番環境では推奨されていない場合

セロリ-Aタスクワーカー-B -l情報 

  

 

  

 

おすすめ

転載: www.cnblogs.com/zydev/p/11732129.html