【问题标题】:0MQ with green threads?0MQ 带绿色线程?
【发布时间】:2012-08-28 01:51:17
【问题描述】:

我越来越喜欢 erlang,它是一个非常适合我的问题的(咳嗽)架构。同时我仍然喜欢想象我可以在 python 中混合 erlang 进程和异步消息传递(我目前正在接受治疗以摆脱这种痴迷)。

在最近的一次狂欢中,我遇到了 0MQ,我喜欢它的消息传递功能。这些对于 erlang/OTP 专家来说可能是不言而喻的,但我只是一个不起眼的 python 程序员(我的收缩无疑会读到这个聪明的论点)。 0MQ user-guide 声明它使用本机操作系统线程,而不是虚拟“绿色”线程。

  1. 有没有办法让 0MQ 与 say eventlet/gevent 一起工作?

  2. 或者,我是否应该避免绿眼怪物并坚持使用单个 Python 应用程序线程,由 0MQ 的消息队列处理非阻塞 I/O 以及它自己(熟练)使用本机线程?

  3. 或者,退出rehab 并返回erlang?

【问题讨论】:

    标签: erlang zeromq


    【解决方案1】:

    回复一个陈旧的线程,因为我在同一条船上。我想我会分享我的想法。

    1:看起来所有繁重的工作都已经完成了:https://github.com/traviscline/gevent-zeromq 已将 gevent 循环与非阻塞 zmq 套接字甚至一些 Cpython 加速集成在一起。它似乎也(在撰写本文时)维护得相当好。

    2:视情况而定;如果您正在编写可以在没有大量外部事件逻辑的情况下使用 zmq 的东西,那么您应该只使用 zmq。如果 OTOH 您需要与其他协议集成,您可能想要使用 gevent(或者可能是扭曲的,尽管它现在根本没有可用的 zmq)。我的项目通常需要多种协议(即:私有队列管理器、公共 http、公共 https、私有 memcache 等),所以我正在研究切换到 gevent 以比我目前最喜欢的项目更快地周转:twisted。

    3:您可能希望完全跳过 zmq,并与现有的基于 erlang 的解决方案(如 rabbitMQ)集成; zmq 的性能优势可能并没有你想象的那么重要,然后你就有了一个 erlang 消息队列,可以很容易地与 python 和现有的库集成。

    另见:Messsage Queue comparison at second life wiki

    【讨论】:

      【解决方案2】:

      Zero MQ 现在可以与 Eventlet 一起使用:

      https://lists.secondlife.com/pipermail/eventletdev/2010-October/000907.html

      【讨论】:

        猜你喜欢
        • 2011-08-08
        • 1970-01-01
        • 2016-09-14
        • 1970-01-01
        • 2010-09-09
        • 2022-12-01
        • 2016-05-09
        • 1970-01-01
        相关资源
        最近更新 更多