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

使用celery.schedulescrontab()创建定时任务

发布时间:2023-12-23 22:59:44

Celery是一个Python分布式任务队列框架,可以方便地实现异步任务、定时任务等功能。其中,使用celery.schedules.crontab()函数可以创建一个定时任务。celery.schedules.crontab()函数的参数包括分钟、小时、日、月和星期几,可以使用*通配符表示任意值,也可以使用范围表示特定取值。

下面是一个使用celery.schedules.crontab()函数创建定时任务的示例:

from celery import Celery, schedules

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

@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
    # 每分钟执行一次任务
    sender.add_periodic_task(schedules.crontab(minute='*'), my_task.s(), name='my_task')

@app.task
def my_task():
    # 这里是任务的具体逻辑
    print('Hello, world!')

if __name__ == '__main__':
    app.start()

在这个示例中,我们创建了一个Celery应用,并通过@app.on_after_configure.connect装饰器注册了一个回调函数setup_periodic_tasks(),用于设置定时任务。在回调函数中,我们调用sender.add_periodic_task()函数来添加定时任务。这里指定了minute='*',表示每分钟执行一次任务。

具体的任务逻辑由my_task()函数实现,这里只是简单地打印出"Hello, world!"。

在执行这个示例代码之前,需要确保已经安装并启动了Redis作为任务队列。根据自身需要,可以修改定时任务的执行频率和任务逻辑。

以上就是使用celery.schedules.crontab()函数创建定时任务的例子。通过Celery的强大功能,我们可以轻松地实现各种定时任务,提高应用程序的可扩展性和性能。