前面的任务调用都是手动触发的,本届将展示以下使用Celery的Beat进程自动调度任务。
Celery Beat是Celery的调度器,其定期启动任务,然后由集群中的可用工作节点worker执行这些任务。默认情况下,Beat进程读取配置文件中CELERYBEAT_SCHE-DULE的设置,也可以使用自定义存储,比如将启动任务的规则存储在SQL数据库中。请确保每次只为任务调度运行一个调度程序,否则任务将被重复执行。使用集群的方式意味着调度不需要同步,服务可以在不使用锁的情况下执行。
先明确一个概念---时区。间隔性任务调度默认使用UTC时区,也可以通过时区设置来改变时区。例如:
CELERY_TIMEZONE="Asia/Shanghai" #通过配置文件设置
app.conf.timezone='Asia/Shanghai' #直接在Celery app的源代码中设置
时区的设置必须加入Celery的App中,默认的调度器(将调度计划存储在celerybeat-schedule文件中)将自动检测时区是否改变,如果时区改变,则自动重置调度计划。其他调度器可能不会自动重置,比如Django数据库调度器就需要手动重置调度计划。
【示例 1】Celery调度实例。
修改myCeleryProj/settings.py
接下来启用CeleryBeat进程处理调度任务。
celery -A myCeleryproj.app beat
最后可以在worker界面看到定时或间隔任务的处理情况。
标签:
python
celerybeat任务调度
本文转载自: https://blog.csdn.net/sj349781478/article/details/121062302
版权归原作者 Mr. Sun_ 所有, 如有侵权,请联系我们删除。
版权归原作者 Mr. Sun_ 所有, 如有侵权,请联系我们删除。