0MQ有绿色线程吗?

时间:2010-08-10 19:10:23

标签: erlang zeromq

我已经成长为喜欢erlang,这是一个很好的(咳嗽)建筑适合我的问题。与此同时,我仍然想象我可以克服erlang进程和在python中传递异步消息(我目前正在接受治疗以摆脱这种困扰)。

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

  1. 有没有一种方法可以使用eventlet / gevent来使0MQ工作?

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

  3. 或者,检查康复中心&回到erlang?

2 个答案:

答案 0 :(得分:3)

回应陈旧的线索因为我在同一条船上。以为我会分享我的想法。

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

2:这取决于;如果你正在写一些可以使用zmq而没有大量外部事件逻辑的东西,那么你应该只使用zmq。如果OTOH你需要与其他协议集成,你可能想要使用gevent(或者也许扭曲,尽管它现在根本没有可用的zmq)。我的项目通常需要多个协议(即:私有队列管理器,公共http,公共https,私有内存缓存等),所以我正在研究切换到gevent以获得比我目前最喜欢的项目周转更快的方法:twisted。

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

另见:Messsage Queue comparison at second life wiki

答案 1 :(得分:2)