首先介绍定时任务,跟crontab类似,celery的定时任务可以很灵活的设置执行的时间频率,定时任务需要启用django,celery,beat三个应用。
实现一个定时任务只需要三步就可以搞定。
第一步: 在需要执行定时任务的函数加上task装饰器,表示这个函数由celery接管
点击(此处)折叠或打开
-
from celery import task
-
-
@task
-
def func():
- pass
以及运行的频率,配置文件为celery.py(跟settings相同目录)
点击(此处)折叠或打开
-
app.conf.update(
- CELERYBEAT_SCHEDULE={
-
'do-task-everyday-func': {
-
'task': 'func',
-
'schedule': crontab(minute='30', hour='10', day_of_week='*',
-
day_of_month='*', month_of_year='*')
- }
- }) 表示每天的10:30运行func任务,task定位运行函数,schedule定位运行日程
第三步: 运行celery
点击(此处)折叠或打开
-
运行django应用 python manage.py runserver 0.0.0.0:8000
-
运行celery(用来执行任务的守护线程) celery -A $appname worker -l info
-
celery会显示由celery监管的函数[tasks]
-
- 运行beat进行(用来监控定时任务是否需要执行) celery -A $appname beat
-
-
-
显示捕捉到的定时任务函数