셀러리는 정기적으로 작업을 수행

셀러리 또한 비동기 작업을 수행 할뿐만 아니라, 작업 또는 일반 작업을 반복의 구현을 지원합니다. 구성 파일의 내용을 읽어 셀러리 비트 프로세스는 주기적으로 타이밍 작업 작업 대기열로 전송됩니다.
다음과 같이 예제를 살펴 보자,이 프로젝트는 구성되어
다음과 같이 __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

추천

출처www.cnblogs.com/heimaguangzhou/p/11585513.html