详解celery.schedulescrontab()的用法和参数设置
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表达式并设置定时任务的执行计划。可以基于分钟、小时、星期几、月份等不同时间单位进行精确的时间调度设置。
