了解celery.schedulescrontab()的用法和参数
celery.schedules.crontab()是Celery任务调度中的一个类,用于指定Crontab风格的定时调度。
Crontab是一个Linux系统的定时任务工具,通过指定任务执行的时间和频率,可以实现定时执行任务的功能。Celery通过使用crontab定时计划,可以按照类似于Crontab的方式来调度任务的执行。
该函数的用法如下:
celery.schedules.crontab(minute='*', hour='*', day_of_week='*', day_of_month='*', month_of_year='*')
它接受多个参数,用于指定定时任务的执行时间和频率。下面是参数的说明:
1. minute:指定执行的分钟值,可以是具体的数值(0-59),也可以是Crontab语法中的符号。默认为'*',表示每分钟都执行。
2. hour:指定执行的小时值,可以是具体的数值(0-23),也可以是Crontab语法中的符号。默认为'*',表示每小时都执行。
3. day_of_week:指定执行的星期值,可以是具体的数值(0-7,其中0和7都表示周日),也可以是Crontab语法中的符号。默认为'*',表示每天都执行。
4. day_of_month:指定执行的日期值,可以是具体的数值(1-31),也可以是Crontab语法中的符号。默认为'*',表示每月都执行。
5. month_of_year:指定执行的月份值,可以是具体的数值(1-12),也可以是Crontab语法中的符号。默认为'*',表示每个月都执行。
下面是一个使用celery.schedules.crontab()的实际使用例子,以每天的固定时间执行任务为例:
from celery import Celery
from celery.schedules import crontab
app = Celery('myapp', broker='pyamqp://guest@localhost//')
@app.task
def mytask():
print("Hello, world!")
app.conf.beat_schedule = {
'my-task': {
'task': 'myapp.mytask',
'schedule': crontab(hour=10, minute=30),
},
}
在上面的例子中,首先引入了Celery和crontab模块。然后创建了一个Celery应用程序,并指定了任务的代理人(broker)。
接下来定义了一个名为mytask的任务函数,该函数将会在执行时打印"Hello, world!"。然后通过设置app.conf.beat_schedule字典来指定定时任务的调度安排。
在这个例子中,我们设置了一个名为my-task的定时任务,它执行的是myapp.mytask函数。任务的调度时间通过crontab()函数设置,这里设置为每天的10点30分执行。
以上就是celery.schedules.crontab()的用法和参数的说明。通过使用celery.schedules.crontab()可以方便地指定任务的定时调度。
