from celery.schedules import crontab

crontab()实例化的时候没设置任何参数,都是使用默认值。crontab一共有7个参数,常用有5个参数分别为:

  • month_of_year:月份。范围1-12
  • day_of_month:日期,范围1-31
  • day_of_week:周几,范围0-6
  • hour:小时,范围0-23
  • minute:分钟,范围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)