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

了解celery.schedulescrontab()的用法和参数

发布时间:2023-12-23 23:00:18

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()可以方便地指定任务的定时调度。