from celery.schedules import crontab
crontab()
实例化的时候没设置任何参数,都是使用默认值。crontab一共有7个参数,常用有5个参数分别为:
month_of_year
:月份。范围1-12day_of_month
:日期,范围1-31day_of_week
:周几,范围0-6hour
:小时,范围0-23minute
:分钟,范围0-59
默认参数,其实参数不仅仅可以是数字或者字符串,还可以是列表、集合。根据不同场景选择。这里记录的是数字和字符串形式。
def __init__(self, minute='*', hour='*', day_of_week='*',
day_of_month='*', month_of_year='*', **kwargs):
@staticmethod
def _expand_cronspec(cronspec, max_, min_=0):
"""Expand cron specification.
Takes the given cronspec argument in one of the forms:
.. code-block:: text
int (like 7)
str (like '3-5,*/15', '*', or 'monday')
set (like {0,15,30,45}
list (like [8-17])
默认是每天、每小时、每分钟执行一次任务。或者简单来说每分钟执行一次。如果每个位置值,那么它需要一些特殊的符号才能达到你的需求。且特殊符号基本能满足你的需求。
特殊符号
* 代表所有的取值范围的数字
/ 代表每的意思,*/5就是每5个单位
- a-b a和b都是数字, 类似[a, b]数学的集合。a和b都是闭合区间。
, 看作 并且逻辑关系,两个都要执行。都需要
9-10 和 13-14 和 18-19 区间时间内, 每10分钟执行一次。
crontab(minute='*/10', hour='9-10,13-14,18-19')
指定工作日执行
crontab(minute='*/10', hour='9-10,13-14,18-19', day_of_week='1-5')
凌晨1点1分执行一次
crontab(minute=1, hour=1)
凌晨1点每分钟执行一次。注意
:它是在在凌晨一点钟(它是一个区间)每分钟执行
crontab(hour=1)