我使用celery来完成某些任务,.apply_async和我的脚本添加的所有任务会自动完成,这取决于某些外部条件。我想获得任务结果的顺序不是直接的而是相反的。
例如,我在 task2 之后和 task3 之后添加 task1 ,我希望celery按以下顺序执行任务: task1 , task3 , task2 。 ( task1 首先,因为芹菜将在我添加它并完成后添加 task2 ,没关系)完成此任务,
如何获得这种行为?
P.S。我使用redis作为经纪人。
答案 0 :(得分:0)
所描述的行为是不可能的,或者至少不是全部。同样,这主要取决于选择的经纪人。基本上,您想要的是在LIFO模式下工作的队列,但是大多数消息代理不是这种情况。至少RabbitMQ仅在FIFO模式下工作。使用RabbitMQ,您可以使用priorities部分地实现您的目标,但是正如已经说过的那样,它不是防弹的,并且需要涉及其他逻辑。