セロリは、定期的なタスクを実行します

セロリのほか、非同期タスクを実行するだけでなく、タスクまたは定期的なタスクを定期的に実施を支援します。設定ファイルの内容を読み出すことにより、セロリビートプロセスは、定期的にタイミングタスクのタスクキューに送信されます。
:次のように例を見てみましょう、プロジェクトが構成され
、以下のように__init__.pyコードは次のとおりです。

[Pythonの]  プレーンテキストビューは、  コードをコピー
?
1
2
3
from celery import Celery
app = Celery( 'demo' )
app.config_from_object( 'celery_app.celeryconfig' )



次のようにceleryconfig.pyコードは次のとおりです。

[Pythonの]  プレーンテキストビューは、  コードをコピー
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
from datetime import timedelta
from celery.schedules import crontab
# Broker and Backend
BROKER_URL = 'redis://127.0.0.1:6379'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
# Timezone
CELERY_TIMEZONE = 'Asia/Shanghai'    # 指定时区,不指定默认为 'UTC'
# CELERY_TIMEZONE='UTC'
# import
CELERY_IMPORTS = (
     'celery_app.task1' ,
     'celery_app.task2'
)
# schedules
CELERYBEAT_SCHEDULE = {
     'add-every-30-seconds' : {
          'task' : 'celery_app.task1.add' ,
          'schedule' : timedelta(seconds = 30 ),       # 每 30 秒执行一次
          'args' : ( 5 , 8 )                           # 任务函数参数
     }
}



次のようにtask1.pyコードは次のとおりです。

[Pythonの]  プレーンテキストビューは、  コードをコピー
?
01
02
03
04
05
06
07
08
09
10
11
12
import time
from celery_app import app
@app .task
def add(x, y):
     time.sleep( 2 )
     return x + y
[mw_shl_code = python,true] import time
from celery_app import app
@app .task
def add(x, y):
     time.sleep( 2 )
     return x + y

[/ mw_shl_code]
今、私たちはプロジェクトのルートディレクトリに次のコマンドを実行し、プロセスセロリ労働者を始めましょう:
celery_demo $セロリの-A celery_appワーカー--loglevel =情報

、その後に、Brokerにタスクを送信するタイミング、セロリはプロセスビート開始プロジェクトのルートディレクトリで次のコマンドを実行します。
celery_demo $セロリビート-Aのcelery_app
セロリビートV4.0.1(latentcall)が開始している。
__ - __ ... - _
にLocalTime - > 2016年12月11日午前9時48分16秒
の設定を- >
    。ブローカー- >のRedis://127.0.0.1:6379 //
    。ローダー- > celery.loaders.app.AppLoader
    。スケジューラ- > celery.beat.PersistentScheduler
    。デシベル- > celerybeat-スケジュール
    ログファイル- > [標準エラー] @。 WARNING%
    maxinterval - > 5.00分(300S)

労働者ウィンドウの後には、我々は、タスクが30秒ごとにタスク1回実行されていることがわかります
上記では、我々はプロセス・ワーカーを開始し、プロセスをビートする2つのコマンドを使用して、我々はまた、コマンドでそれらを置くことができる

$セロリの-B -Aのcelery_appワーカー--loglevel =情報

関係するその他の技術情報:gzitcast

おすすめ

転載: www.cnblogs.com/heimaguangzhou/p/11585513.html