如何以编程方式从Celery队列中提取项目?

时间:2015-10-08 17:52:34

标签: python celery

我有一个Celery队列,我希望以编程方式根据某些触发器等从队列中提取下一个项目。

如果我将任务定义为

@task
def my_task():
    do_stuff()

然后通过

将项目放入队列
my_task.apply_async()

芹菜将尽可能快地穿过队列中的物品。但我希望能够做的是:

my_task.process_next()

有没有办法控制Celery何时从队列中提取东西?

1 个答案:

答案 0 :(得分:1)

Celery非常合理地假设,一旦有什么东西在队列中,您希望尽快处理它。 there is the countdown argument但我猜这不是你想要的。

你可以尝试覆盖Task Class并在__call__方法中加入一些逻辑来检查你是否真的想要处理任务,然后如果事实证明它没有准备就可以安排重试按您的时间表处理。