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情報