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

使用celery.schedulescrontab()在Python中实现定期执行任务调度

发布时间:2023-12-23 10:33:01

在Python中,可以使用Celery框架来实现定期执行任务调度。Celery是一个分布式任务队列,它可以把任务分发到不同的工作节点上执行,通过定时调度可以实现周期性的任务执行。

首先,你需要安装Celery库:

pip install celery

然后,在你的Python项目中创建一个celery_app.py文件,并添加以下代码:

from celery import Celery
from celery.schedules import crontab

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

@app.task
def my_task():
    print('Task executed successfully!')

# 定义任务调度
app.conf.beat_schedule = {
    'my-task': {
        'task': 'tasks.my_task',
        'schedule': crontab(minute=0, hour='*/2')  # 每隔2小时执行一次任务
    },
}

在上面的代码中,我们首先导入了Celerycrontab类。Celery类用于创建一个Celery应用,crontab类用于定义任务的执行时间规则。

接下来,我们创建了一个名为my_task的任务,它使用了@app.task装饰器来将其注册为Celery应用的任务。在这个示例中,my_task任务的代码执行完毕后会打印一条信息。

然后,我们使用app.conf.beat_schedule属性来定义任务调度。这个属性是一个字典,其中键是任务的 名称,值是一个字典,包含了任务的详细信息。在这个例子中,我们定义了一个名为my-task的任务调度,并指定了任务的执行时间规则。利用crontab类的minutehour参数,我们定义了任务每隔2小时执行一次。

最后,我们在celery_app.py文件中添加以下代码来启动Celery应用的任务调度器:

if __name__ == '__main__':
    # 启动任务调度器
    app.conf.timezone = 'UTC'  # 设置时区
    app.start()

现在,你可以运行celery_app.py文件,它将启动Celery应用的任务调度器,定期执行my_task任务。每当任务执行时,你将会看到一条打印信息。

上面的例子是一个简单的示例,你可以根据自己的需求来定义更复杂的任务调度规则。Celery提供了丰富的调度选项,可以根据日期、时间、星期等来定义任务的执行规则。你可以查阅Celery的官方文档来了解更多有关任务调度的详细信息。

需要注意的是,Celery默认使用的是UTC时区。如果你想改变时区,可以在代码中设置app.conf.timezone属性为你所需的时区。

以上就是使用Celery库中的crontab()方法在Python中实现定期执行任务调度的例子。希望对你有所帮助!