我在Celery中有任务A和B。B是A的拮抗剂。因此,当这些任务以相同的参数并行运行时,系统变得不一致。有两个问题:
-
我可以始终基于参数连续运行任务A和任务B吗?我想用参数1依次运行A和用参数1运行B,但A(1)和B(2)可以并行运行。
-
有没有一种方法可以折叠尚未运行的重复任务序列?比方说,我在broker中有ABABAB任务(在我的情况下是Redis),我可以只执行AB吗?
我倾向于认为这两个问题都可以通过高级代理来解决,但我希望避免部署RabbitMQ。
提前谢谢。
我决定在Redis中为任务维护单独的队列。当我向Celery发送新任务时,我也会将其添加到Redis列表中。当任务正在运行时,它决定它必须做什么:A或B取决于当前系统状态。
解决方案看起来不太好,但我希望这不会造成问题。