在使用单个工作人员时,是否存在Celery功能或在本地执行定期后台任务的首选方法?有点像背景线程,但由Celery安排和处理?
celery.beat
似乎不合适,因为它似乎只是与消费者联系在一起(因此可以在任何服务器上运行) - 这就是我之后的调度类型,但只是一个任务总是在运行此工作程序的每台服务器上本地运行(该任务执行一些清理以及与工作人员处理的主要任务相关的统计信息。)
我可能会以错误的方式解决这个问题,但我只能在芹菜工人守护程序中实现这一点。
答案 0 :(得分:0)
You could use a custom remote control command and use the broadcast function on a cron to run cleanup or whatever else might be required.
答案 1 :(得分:0)
我想到的一种可能的方法,虽然不理想,但是修补celery.worker.heartbeat Heart()
类。
由于我们已经使用了心跳,因此该类允许对其start()
方法(添加另一个self.timer.call_repeatedly()
条目)或其他self.eventer.on_enabled.add()
__init__
条目进行简单修改。引用了一种新方法,该方法也使用self.timer.call_repeatedly()
来执行周期性任务。