使用单个工人时在本地执行定期背景任务的芹菜功能或首选方法?有点像背景线程,但按芹菜安排和处理?
celery.beat
似乎不合适,因为它似乎只是与消费者绑定(因此可以在任何服务器上运行) - 这是我所追求的调度类型,但是只是在每个服务器上始终在运行的每个服务器上运行的任务该工人(该任务进行了一些清理和与工作人员处理的主要任务有关的统计数据)。
我可能会以错误的方式解决这个问题,但是我仅限于芹菜工人守护程序中实施此操作。
您可以使用自定义远程控制命令,并在cron上使用广播功能进行清理或可能需要的其他内容。
我想到的一种可能的方法,尽管不是理想的是修补celery.worker.heartbeat Heart()
类。
由于我们已经使用了心跳,因此该类允许对其start()
方法进行简单修改(添加另一个self.timer.call_repeatedly()
条目)或附加的self.eventer.on_enabled.add()
__init__
条目,该输入引用了一种新方法,该方法还使用self.timer.call_repeatedly()
执行定期任务。