セロリのほか、非同期タスクを実行するだけでなく、タスクまたは定期的なタスクを定期的に実施を支援します。設定ファイルの内容を読み出すことにより、セロリビートプロセスは、定期的にタイミングタスクのタスクキューに送信されます。
:次のように例を見てみましょう、プロジェクトが構成され
、以下のように__init__.pyコードは次のとおりです。
1
2
3
|
from
celery
import
Celery
app
=
Celery(
'demo'
)
app.config_from_object(
'celery_app.celeryconfig'
)
|
次のようにceleryconfig.pyコードは次のとおりです。
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コードは次のとおりです。
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