셀러리 또한 비동기 작업을 수행 할뿐만 아니라, 작업 또는 일반 작업을 반복의 구현을 지원합니다. 구성 파일의 내용을 읽어 셀러리 비트 프로세스는 주기적으로 타이밍 작업 작업 대기열로 전송됩니다.
다음과 같이 예제를 살펴 보자,이 프로젝트는 구성되어
다음과 같이 __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]
이제, 프로젝트의 루트 디렉토리에서 다음 명령을 실행, 우리가 공정 셀러리 근무를 시작하자 :
노동자 --loglevel = 정보가 celery_demo의 $ 셀러리 -A의 celery_app
다음 과정을 비트 셀러리를 시작 타이밍에서, 브로커에 작업을 보내 프로젝트 루트 디렉토리에서 다음 명령을 실행합니다
celery_demo $ 셀러리 비트의 -A celery_app의
셀러리 비트의 v4.0.1을 (latentcall) 시작합니다.
__ - __ ... - _
로컬 시간 -> 2016년 12월 11일 9시 48분 16초
구성 ->
. 브로커 -> 레디 스 : //127.0.0.1 : 6379 //
. 로더 -> celery.loaders.app.AppLoader
. 스케줄러 -> celery.beat.PersistentScheduler
. DB -> celerybeat-일정
. 로그 파일 -> [표준 에러] @ 경고 %
maxinterval -.> 5.00 분 (300S)
작업자 창 후 우리는 작업이 30 초마다 작업 1 회 실행되는 것을 볼 수 있습니다
상기에서, 우리는 공정 작업자를 시작하고 프로세스를 이길 두 개의 명령을 사용하여, 우리는 또한 명령에 넣을 수 있습니다
$ 셀러리 -B의 -A의 celery_app 노동자 --loglevel = 정보
우려를 수도 있습니다 더 많은 기술 정보 : gzitcast