Python 芹菜任务、工人和队列组织
我有一些独立的任务,我目前正在将这些任务交给不同的/独立的员工 为了便于理解,我将向您介绍一个示例。假设我有三个独立的任务,即Python 芹菜任务、工人和队列组织,python,multithreading,asynchronous,rabbitmq,celery,Python,Multithreading,Asynchronous,Rabbitmq,Celery,我有一些独立的任务,我目前正在将这些任务交给不同的/独立的员工 为了便于理解,我将向您介绍一个示例。假设我有三个独立的任务,即睡眠,吃,微笑。任务可能需要在不同的芹菜配置下工作。因此,我认为,最好将这些任务中的每一个任务分成不同的目录,并使用不同的工作人员。某些任务可能需要在不同的服务器上工作 我计划在将来添加更多的任务,每个任务都将由不同的开发人员实现 在提供这些条件的情况下,每个任务都有多个工人关联 现在,问题和我的问题来了 当我启动三个smile任务时,其中一个任务将由smile的工作人员
睡眠
,吃
,微笑
。任务可能需要在不同的芹菜配置下工作。因此,我认为,最好将这些任务中的每一个任务分成不同的目录,并使用不同的工作人员。某些任务可能需要在不同的服务器上工作
我计划在将来添加更多的任务,每个任务都将由不同的开发人员实现
在提供这些条件的情况下,每个任务都有多个工人关联
现在,问题和我的问题来了
当我启动三个smile
任务时,其中一个任务将由smile
的工作人员提取并执行。但是下一个任务将从eat的工人那里获取,并且永远不会执行
那么,什么是公认的、最常见的模式?我应该将每个任务发送到不同的队列中,并且工作人员应该监听自己的队列吗?在类似的设置中,我决定使用不同任务的特定队列,然后我可以决定哪个工作人员监听哪个队列(也可以动态更改!)答案取决于两件应该考虑的事情:
- 命令的顺序应该保留吗
- 您是否计划在不同的机器之间扩展队列以提高吞吐量
如果您有非常密集的任务流量(就频率而言),那么为每种任务类型创建不同的队列可能是值得的,这样当您长大后,您可以将每种任务放在rabbit集群中的不同节点上。我决定使用多个队列。到目前为止,我还没有遇到任何问题。如果应该保留订单,那么应该使用任务
链