gpt4 book ai didi

python - celery 任务、 worker 和队列组织

转载 作者:行者123 更新时间:2023-11-28 18:43:42 25 4
gpt4 key购买 nike

我有一些独立的任务,我目前正在将这些任务分配给不同的/独立的工作人员。

为了便于理解,我将向您介绍一个示例。假设我有三个独立的任务,即 sleepeatsmile。一个任务可能需要在不同的 celery 配置下工作。所以,我认为,最好将这些任务中的每一个分成不同的目录,由不同的工作人员负责。有些任务可能需要在不同的服务器上工作。

我计划在未来添加更多任务,每个任务将由不同的开发人员实现。

在提供这些条件的情况下,每个单独的任务关联的工作人员不止一个。

现在,这是问题和我的问题。

当我启动三个 smile 任务时,其中一个将由 smile 的 worker 获取并执行。但是下一个任务将从 eat 的 worker 获取并且永远不会执行。

那么,公认的、最常见的模式是什么?我是否应该将每个任务发送到不同的队列中,而工作人员应该监听自己的队列?

最佳答案

答案取决于应考虑的几件事:

  • 是否应保留命令顺序?

如果是这样,最好的方法是将某种命令模式作为序列化消息放置,这样每条获取/使用的消息都可以在您的应用程序的单个位置按其顺序执行。如果这对您来说不是问题 - 您可以玩主题交换,同时在单个交换中发布不同的消息类型,并让不同的工作人员通过预定义的模式接收消息。顺便说一下,这将使您可以轻松地添加另一个任务,比如“喝”,而无需更改现有交通拓扑/现有工作人员中的线路。

  • 您是否计划在不同机器之间扩展队列以提高吞吐量?

如果您的任务流量非常大(就频率而言),可能值得为每种任务类型创建不同的队列,以便稍后当您增长时,您可以将每个任务放在 rabbit 集群中的不同节点上。

关于python - celery 任务、 worker 和队列组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22958634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com