2024-04-23 19:52:14 发布
网友
当使用单个工作线程时,是否有任何Celery功能或首选方式在本地执行定期后台任务?有点像后台线程,但由芹菜安排和处理?在
celery.beat似乎不太合适,因为它似乎只是简单地绑定到一个使用者(因此可以在任何服务器上运行)-这是我所追求的调度类型,但只是一个任务,它总是在运行此工作进程的每台服务器上本地运行(该任务执行一些与工作进程处理的主任务相关的清理和统计信息)。在
celery.beat
我可能会以错误的方式来处理这个问题,但我仅限于在一个celery worker守护进程中实现它。在
我想到的一种可能的方法,尽管不是理想的,是修补celery.worker.heartbeat Heart()类。在
celery.worker.heartbeat Heart()
由于我们已经使用心跳,该类允许对其start()方法进行简单修改(添加另一个self.timer.call_repeatedly()项),或附加的self.eventer.on_enabled.add()__init__项,它引用了一个新方法,该方法也使用self.timer.call_repeatedly()来执行周期性任务。在
start()
self.timer.call_repeatedly()
self.eventer.on_enabled.add()
__init__
您可以在cron上使用a custom remote control command和the broadcast function来运行清理或其他可能需要的操作。在
我想到的一种可能的方法,尽管不是理想的,是修补
celery.worker.heartbeat Heart()
类。在由于我们已经使用心跳,该类允许对其
start()
方法进行简单修改(添加另一个self.timer.call_repeatedly()
项),或附加的self.eventer.on_enabled.add()
__init__
项,它引用了一个新方法,该方法也使用self.timer.call_repeatedly()
来执行周期性任务。在您可以在cron上使用a custom remote control command和the broadcast function来运行清理或其他可能需要的操作。在
相关问题 更多 >
编程相关推荐