crontab是比较完善,且稍微有点复杂(相对前面两种方式而言)的方式。可以实现我们各种设置时间的需求。
crontab
引入from celery.schedules import crontab
crontab一共有7个参数,常用有5个参数分别为:
minute:分钟,范围0-59;
hour:小时,范围0-23;
day_of_week:星期几,范围0-6。以星期天为开始,即0为星期天。这个星期几还可以使用英文缩写表示,例如"sun"表示星期天;
day_of_month:每月第几号,范围1-31;
month_of_year:月份,范围1-12。
例如,下面的定时任务:
from celery import Celery
from celery.schedules import crontab
app = Celery('tasks')
app.conf.beat_schedule = {
'contab_func2-every-day': {
'task': 'tasks.fun2',
# 每周一至周五早上8点执行任务函数
'schedule': crontab(minute=0, hour=8, day_of_week=[1, 2, 3, 4, 5]),
'args': []
}
}
如果需要秒的话就得引入datetime模块了
from datetime import timedelta
如下:
app.conf.beat_schedule = {
'app.tasks.add': {
'task': 'app.tasks.add', # 执行的任务
'schedule': timedelta(seconds=5), # 每5秒执行一次
'args': (1, 10) # 参数
}
}