Celery-RabbitMQ-执行顺序



我正在运行一些长任务,需要确保排队的任务按接收顺序执行。我在第一次测试中发现,当我达到最大工作人员数量(CELERYD_CONCURRENCY)时,以下发送的任务会排队,然后第一个要执行的任务实际上是最新接收的任务。

当然,相反的行为是Im所追求的,即当有空闲工作者时,最旧的消息是第一个被执行的。

对这种行为的解释是什么?如何改变这种行为?

这是Rabbitmq设置prefetchCount的结果,该设置为每个通道预取一组消息。

由于我将队列用于长时间运行的任务,因此我通过将CELERYD_PREFETCH_MULTIPLIER设置为1(默认情况下为4)来解决此问题,从而只预取一条消息,从而保留执行顺序。

相关内容

  • 没有找到相关文章

最新更新