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

使用celery.schedulescrontab()实现定时任务调度

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

Celery是一个分布式任务队列框架,提供了灵活的定时任务调度功能。通过使用Celery的schedules模块中的crontab()函数,可以轻松地创建定时任务。

crontab()函数接受6个参数,分别代表分钟、小时、日期、月份、星期几和时区。可以使用通配符(*)表示任意值,可以使用逗号(,)表示多个值,还可以使用连字符(-)表示范围。

下面是一个使用Celery和crontab()函数实现定时任务调度的例子:

首先,需要安装Celery和Redis:

pip install celery
pip install redis

然后,创建一个Python文件,比如scheduler.py,并写入以下内容:

from celery import Celery
from celery.schedules import crontab

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

@app.task
def print_hello():
    print('Hello, Celery!')

app.conf.beat_schedule = {
    'print-every-minute': {
        'task': 'scheduler.print_hello',
        'schedule': crontab(),
    },
}

在这个例子中,我们首先导入Celery和crontab()函数。然后,创建一个Celery应用实例app,并指定Redis作为消息代理。

接下来,定义一个名为print_hello的任务,并在任务中打印"Hello, Celery!"。使用@app.task装饰器将这个函数转换为一个Celery任务。

最后,通过修改app.conf.beat_schedule字典,配置定时任务的调度规则。在这个例子中,我们创建了一个名为print-every-minute的定时任务,调用print_hello任务,并使用crontab()函数指定任务每分钟执行一次。

接下来,在终端中执行以下命令启动Celery调度器和执行器:

celery -A scheduler worker --loglevel=info --beat

这样,定时任务调度器就会启动,并按照设定的规则执行定时任务。

总结一下,使用Celery的schedules模块中的crontab()函数,我们可以简单地实现定时任务调度。只需要使用crontab()函数指定任务的执行时间规则,并将任务配置到Celery应用的beat_schedule字典中,然后通过启动调度器和执行器,即可实现定时任务调度功能。