欢迎访问宙启技术站
智能推送

详解celery.schedulescrontab()的用法和参数设置

发布时间:2023-12-23 23:02:22

celery.schedules.crontab()是一个用于创建cron表达式的类,可以用于指定任务的定时执行计划。cron表达式是一种时间表达式,用于指定任务的具体执行时间。

该类的构造函数具有以下参数:

- minute:表示分钟字段,可以是一个整数,一个逗号分隔的整数列表,或一个范围(x-y)。

- hour:表示小时字段,可以是一个整数,一个逗号分隔的整数列表,或一个范围(x-y)。

- day_of_week:表示星期几字段,可以是一个数字(0-6,0表示星期日),一个逗号分隔的数字列表,或一个范围(x-y)。

- day_of_month:表示一个月中的哪几天字段,可以是一个整数,一个逗号分隔的整数列表,或一个范围(x-y)。

- month_of_year:表示一个年中的哪几个月字段,可以是一个整数,一个逗号分隔的整数列表,或一个范围(x-y)。

- timezone:表示时区字段,可以是一个字符串。

crontab()实例化后可以作为Celery定时任务的参数传递给apply_async()等函数。

下面是一个使用celery.schedules.crontab()的例子:

from celery import Celery
from celery.schedules import crontab

app = Celery('tasks', broker='redis://localhost:6379/0')

@app.task
def add(x, y):
    return x + y

# 使用crontab对象设置定时任务,每分钟执行一次add任务
app.conf.beat_schedule = {
    'add-every-minute': {
        'task': 'tasks.add',
        'schedule': crontab(),
        'args': (3, 5)
    },
}

在上面的例子中,我们创建了一个Celery应用程序,并定义了一个add任务。然后,我们使用crontab()创建了一个crontab对象,并将它作为定时任务的schedule参数传递给了Celery的配置。

这个定时任务被命名为'add-every-minute',它的调度方式使用crontab对象,表示每分钟执行一次add任务。任务的参数为3和5。

当我们启动Celery的调度器时,它会按照设置的定时计划执行任务。在每个分钟开始时,add任务将被调度执行,传入参数3和5,然后返回计算结果。

总结来说,celery.schedules.crontab()可以用于创建cron表达式并设置定时任务的执行计划。可以基于分钟、小时、星期几、月份等不同时间单位进行精确的时间调度设置。