Отвечая на несвежую нить, потому что я как бы в одной лодке.Думаю, я бы поделился своими мыслями.
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 с существующими библиотеками.
Также см .: Сравнение очереди сообщений в вики-жизни второй жизни