使用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字典中,然后通过启动调度器和执行器,即可实现定时任务调度功能。
