我有一个Celery队列,我希望以编程方式根据某些触发器等从队列中提取下一个项目。
如果我将任务定义为
@task
def my_task():
do_stuff()
然后通过
将项目放入队列my_task.apply_async()
芹菜将尽可能快地穿过队列中的物品。但我希望能够做的是:
my_task.process_next()
有没有办法控制Celery何时从队列中提取东西?
答案 0 :(得分:1)
Celery非常合理地假设,一旦有什么东西在队列中,您希望尽快处理它。 there is the countdown argument但我猜这不是你想要的。
你可以尝试覆盖Task Class并在__call__
方法中加入一些逻辑来检查你是否真的想要处理任务,然后如果事实证明它没有准备就可以安排重试按您的时间表处理。