【问题标题】:How to add celery task to top of queue?如何将芹菜任务添加到队列顶部?
【发布时间】:2024-05-21 16:45:02
【问题描述】:

我使用 celery 执行一些任务,所有由 .apply_async 添加的任务和我的脚本都会自动执行,这取决于一些外部条件。我想得到任务的结果不是直接的,而是相反的。

例如,我在 task2task3 之后添加 task1,我希望 celery 按以下顺序执行任务:task1task3task2。 (先task1,因为celery在我添加后会做这个任务,然后我添加了task2,没关系),

我怎样才能得到这种行为?

附:我使用 redis 作为代理。

【问题讨论】:

    标签: python-3.x redis celery celery-task


    【解决方案1】:

    所描述的行为是不可能的,或者至少在完全程度上是不可能的。此外,这主要取决于选择的经纪人。基本上,您想要的是在 LIFO 模式下工作的队列,但是大多数消息代理并非如此。至少 RabbitMQ 只能在 FIFO 模式下工作。使用 RabbitMQ,您可以通过 priorities 部分实现您的目标,但如前所述,它不是万无一失的,需要涉及额外的逻辑。

    【讨论】: