celery消息队列请看这篇文章:Celery的安装和使用_花果山总钻风的博客-CSDN博客
1、celery配置示例
from celery.schedules import crontab
from datetime import timedelta
app = Celery('task', broker = config['CELERY_BROKER'])
app.conf.update(
enable_utc = False, # 使用本地时区
task_serializer = 'json',
accept_content = ['json'], # Ignore other content
result_serializer = 'json',
worker_concurrency = 1,
beat_schedule = {
"send-every-day": {
"task": "services.collect.save_yesterday_data",
"schedule": crontab(minute = 30, hour = 0), # 每天0点30分
# "schedule": timedelta(hours = 96), # 96个小时
# "schedule": 600, # 600秒
"args": ()
}
}
)
2、crontab示例
from celery.schedules import crontab
# 每分钟执行一次
crontab()
#每小时的15分,执行一次任务
crontab(minute=15)
#每天0点0分 执行一次任务
crontab(minute=0, hour=0)
# 每十五分钟执行一次
crontab(minute='*/15')
# 每周日的每一分钟执行一次
crontab(minute='*',hour='*', day_of_week='sun')
# 每周三,五的三点,七点和二十二点没十分钟执行一次
crontab(minute='*/10',hour='3,17,22', day_of_week='thu,fri')
#每个小时的0分和30分 都执行一次任务
crontab(minute='0,30')
#指定9点到12点 每分钟执行一次任务
crontab(minute='*', hour='9-12')
#指定9点到12点和20点 每分钟执行一次任务
crontab(hour='9-12,20')
#每2个小时中每分钟执行1次任务
crontab(hour='*/2')
#每3个小时的0分时刻执行1次任务
#即[0,3,6,9,12,15,18,21]点0分
crontab(minute=0, hour='*/3')
#每3个小时或8点到12点的0分时刻执行1次任务
#即[0,3,6,9,12,15,18,21]+[8,9,10,11,12]点0分
crontab(minute=0, hour='*/3,8-12')
#每个季度的第1个月中,每天每分钟执行1次任务
#月份范围是1-12,每3个月为[1,4,7,10]
crontab(month_of_year='*/3')
#每月偶数天数的0点0分时刻执行1次任务
crontab(minute=0, hour=0, day_of_month='2-31/2')
#每年5月11号的0点0分时刻执行1次任务
crontab(0, 0, day_of_month='11', month_of_year='5')
3、执行方法,我们以 cele.py 为例进行说明
celery -A cele beat
或
celery -A cele worker -l info -B