celery beat
是一个调度程序;它定期启动任务,然后由集群中的可用节点执行任务。beat_schedule
项中获取条目(entries),但是也可以使用自定义存储,例如将entries存储在SQL数据库中。app.conf.timezone ='Asia/Shanghai'
)对其进行配置,或者如果已使用app.config_from_object
对其进行了设置,则可以将该设置添加到您的应用程序模块(既常用的celeryconfig.py
)中。有关配置选项的更多信息,请参见配置。celerybeat-schedule
文件中)将自动检测到时区已更改,并重置调度程序本身,但是其他调度程序可能不那么聪明(例如Django数据库调度程序,请参见下文,在这种情况下,您必须手动重置调度计划。USE_TZ
设置兼容。 对于Django用户,将使用TIME_ZONE
设置中指定的时区,或者可以使用celery的timezone
设置单独为Celery指定自定义时区。 更改与时区相关的设置时,数据库调度程序不会重置,因此您必须手动执行以下操作:on_after_configure
处理程序中进行设置意味着我们在使用test.s()
时不会在模块级别评估应用程序。请注意,on_after_configure
是在设置应用程序后发送的,因此在声明应用程序的模块之外的任务(例如,在celery.Celery.autodiscover_tasks()
位于的task.py文件中)必须使用稍后的信号,例如on_after_finalize
。 add_periodic_task()
函数会将条目添加到幕后的beat_schedule
设置中,并且该设置也可以用于手动设置周期性任务: 例如 每30秒运行task.add任务。app.conf.xxx
)设置这些选项,也可以保留单独的模块(celeryconfig.py
)进行配置。 如果您想对args使用单个项目元组,请不要忘记构造函数是逗号,而不是一对括号。cron
一样,如果第一个任务在下一个任务之前没有完成,则这些任务可能会重叠。如果对此感到担忧,则应该使用锁定策略来确保一次只能运行一个实例(例如,请确保确保一次只能执行一个任务 one at one time)。celery beat
的时间有关。solar_noon
,正式定义为太阳经过天体子午线的那一刻,即使太阳在地平线以下,它也会每天发生。celery beat
服务workers -B
选项将celert beat
嵌入到worker内,如果您永远不会运行一个以上的worker节点,这很方便,但是它并不常用,因此不建议用于生产环境:celerybeat-schedule
)中,因此需要访问该文件才能在当前目录中进行写操作,或者您可以为此文件指定一个自定义位置:django_celery_beat.schedulers:DatabaseScheduler
调度程序启动celery beat
服务: