0MQ с зелеными нитками? - PullRequest
       6

0MQ с зелеными нитками?

7 голосов
/ 10 августа 2010

Я полюбил эрланг, и это отличное (кашляющее) архитектурное решение моей проблемы.В то же время мне все еще нравится представлять, что я могу вмешиваться в процессы эрланга и асинхронную передачу сообщений в Python (я сейчас нахожусь на терапии, чтобы избавиться от этой одержимости).функции обмена сообщениями.Это может быть самоочевидно для эксперта erlang / OTP, но я всего лишь скромный программист на python (без сомнения, мой специалист получит прочитать этот умный аргумент). 0MQ руководство пользователя утверждает, что оно использует собственные потоки ОС, а не виртуальные "зеленые" потоки.

  1. Есть ли способ заставить 0MQ работать с скажем eventlet/ gevent?

  2. Или я должен избегать зеленоглазого монстра и придерживаться одного потока приложения Python с неблокирующим вводом / выводом, обрабатываемым очередью сообщений 0MQ и собственной (квалифицированный) использование собственных потоков?

  3. Или, проверить реабилитацию и вернуться к Erlang?

Ответы [ 2 ]

3 голосов
/ 30 апреля 2011

Отвечая на несвежую нить, потому что я как бы в одной лодке.Думаю, я бы поделился своими мыслями.

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 с существующими библиотеками.

Также см .: Сравнение очереди сообщений в вики-жизни второй жизни

2 голосов
/ 26 октября 2010

Zero MQ теперь работает с Eventlet:

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

...