【问题标题】:why use rabbitmq or similar versus python builtin multiprocessing queue?为什么使用 rabbitmq 或类似的而不是 python 内置的多处理队列?
【发布时间】:2019-06-18 16:17:05
【问题描述】:

我有一个任务生产者和多个工作人员来处理这些任务。许多地方推荐rabbitmq和/或celery。然而,python 有一个内置的多处理队列,可以使用管理器/代理在 ip/端口上共享。改用 rabbitmq 之类的东西有什么好处?

【问题讨论】:

    标签: rabbitmq message-queue python-multiprocessing


    【解决方案1】:

    RabbitMq 是一种企业级工具,通常单独部署在进程外服务器/VM/容器上,并在企业服务总线空间中发挥作用。

    • Rabbit 将可靠的消息传递作为目标 - 例如。消息被持久化,集群中的节点可以在不丢失消息的情况下重启。
    • 支持大范围的messaging topologies,例如点对点、扇出和主题订阅
    • 可以通过向集群添加多个节点来扩展容量
    • 允许使用路由键或标头过滤器有条件地将消息路由到队列
    • 与客户端技术无关,即客户端可以在任何支持 AMQP 协议的平台上
    • 具有开箱即用的管理、监控和诊断 UI
    • 拥有广泛的扩展和工具,例如shovels,允许在多个 RabbitMQ 集群之间复制消息。

    我不是 Python 专家,但根据我对 multiprocessing package 的了解,它充当在工作进程和线程之间分配工作的管理器,因此 IMO 将被视为更本地的系统问题,而不是“企业”级别。 例如您需要handle persistence,即消息不会在崩溃/重启期间丢失,并且可能需要构建您自己的管理和监控工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-23
      • 2011-06-17
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-26
      相关资源
      最近更新 更多