gpt4 book ai didi

python subprocess.Popen() 与消息队列( celery )

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:10 39 4
gpt4 key购买 nike

我读到消息队列优于 subprocess.Popen()。据说消息队列是可扩展的解决方案。我想了解这是怎么回事。

我只想列出消息队列相对于 subeprocess.Popen() 的好处,这样我就可以说服我的上级使用消息队列而不是 subprocess

最佳答案

这些是完全不同的东西。

subprocess.Popen() 只是为您传递给它的特定命令生成(通过调用 forkexec)新的操作系统进程。因此,它非常适合您需要在单独的进程中执行某些内容并(可选)获得执行结果(通过管道以有点笨拙的方式)的情况。

队列(如 Celery 或 ActiveJob)为您提供两个主要功能:

  • 用于任务(或消息)的存储(更准确地说,是一些现有存储的接口(interface),如 PostgreSQL 或 MongoDB),这些任务(或消息)将在进入该存储之前自动序列化。
  • 轮询此存储并实际执行这些任务的工作人员(在执行之前反序列化它们,也是自动的)。

因此,即使在分布式环境中,也可能有很多工作人员。它不仅为您提供了垂直可扩展性,还为您提供了水平可扩展性(通过让您的工作人员在不同的机器上)。

另一方面,队列更适合异步处理(即需要稍后执行且您现在不需要结果的作业)并且比简单的进程生成更重量级。

因此,如果您有简单的一次性作业只是要在主流程之外的某个地方执行,请使用流程。

如果您有一堆需要异步执行的不同作业,并且您希望能够扩展该过程,则应该使用队列,它们会让生活变得更轻松。

关于python subprocess.Popen() 与消息队列( celery ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44592972/

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