首页 > 其他 > 详细

celery 定时任务

时间:2019-12-22 16:48:25      阅读:98      评论:0      收藏:0      [点我收藏+]

1.celery 定时任务

shared_task

# celery worker:(工人)启动worker节点来处理任务
python manage.py celery worker -l info
# celery beat:(领导)启动周期任务
python manage.py celery beat -l info
# 启动可视化flower
python manage.py celery flower
#方便测试,同时启动worker,beat
python manage.py celery worker -B -l info

# 定时
minute:分钟,范围0-59;
hour:小时,范围0-23;
day_of_week:星期几,范围0-6。以星期天为开始,即0为星期天。这个星期几还可以使用英文缩写表示,例如“sun”表示星期天;
day_of_month:每月第几号,范围1-31;
month_of_year:月份,范围1-12
crontab(minute=‘*‘, hour=‘*‘, day_of_week=‘*‘, day_of_month=‘*‘, month_of_year=‘*‘)
crontab(minute=15)  # 每小时的15分时刻执行一次任务
crontab(minute=‘0,30‘)   # 0分和30分执行一次任务
crontab(minute=‘*‘, hour=‘9-12‘)   # 指定9点到12点每个小时的每分钟执行任务
crontab(hour=‘9-12‘)     # 这里*号是默认值,可以省略如下
crontab(hour=‘9-12,20‘)    # 指定9点到12点和20点中每分钟执行任务
crontab(minute=‘*/2‘)    # 每2分钟执行一次
crontab(hour=‘*/2‘)    # 每2个小时中每分钟执行1次任务
crontab(minute=0, hour=‘*/3‘)    # 每3个小时的0分时刻执行1次任务
crontab(minute=0, hour=0, day_of_month=‘2-31/2‘)   # 每月偶数天数的0点0分时刻执行1次任务
crontab(month_of_year=‘*/3‘)   # 月份范围是1-12,每3个月为[1,4,7,10]
crontab(minute=0, hour=0, day_of_month=‘2-31/2‘)    # 每月偶数天数的0点0分时刻执行1次任务
crontab(0, 0, day_of_month=‘11‘, month_of_year=‘5‘)    # 每年5月11号的0点0分时刻执行1次任务

# 发布任务
celery -A celery_task beat
# 执行任务
celery -A celery_task worker -l info -P eventlet
# 将以上两条合并
celery -B -A celery_task worker
# 后台启动celery worker进程
celery multi start work_1 -A appcelery
# 停止worker进程,如果无法停止,加上-A
celery multi stop WORKNAME
# 重启worker进程
celery multi restart WORKNAME
# 查看进程数
celery status -A celery_task

2.settings.py

# celery定时任务
from celery.schedules import crontab

CELERYBEAT_SCHEDULE = {
    # 定时任务一: 测试
    u‘测试‘: {
        "task": "apps.steam_user.tasks.crontab_test",
        "schedule": crontab(minute=‘*/1‘),
        "args": (),
    },
    # 定时任务一: 登入qq获取cookie
    u‘登入qq获取cookie‘: {
        "task": "apps.steam_user.tasks.get_cookie",
        "schedule": crontab(minute=‘*/10‘),
        "args": (),
    },
}

3.tasks.py

from celery import shared_task

@shared_task()
def crontab_test():
    print(‘测试开始‘)
    time.sleep(2)
    print(‘测试结束‘)

  

celery 定时任务

原文:https://www.cnblogs.com/yoyo1216/p/12080142.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!