Пожалуйста, объясните Zeromq eventloop - PullRequest
4 голосов
/ 28 сентября 2011

Чем отличается мультиплексирование нескольких сокетов через POLLIN?

while True:
    socks = dict(poller.poll())

    if socks.get(control_receiver) == zmq.POLLIN:
        ...

    if socks.get(work_receiver) == zmq.POLLIN:
        ...

Как это может сделать потоки слушателей более надежными и простыми в обращении?


Справочная информация : я запускаю свой собственный сервер API и задаюсь вопросом, как сделать контроллер (часть, которая получает запросы от внешнего источника и управляющие сигналы от рабочих)

1 Ответ

6 голосов
/ 21 июня 2012

ØMQ Poller может использоваться для обслуживания и связи с несколькими розетками.

Как бы то ни было, с ØMQ Poller вы получаете явные блоки (под циклом if) для обработки сокетов.Каждый сокет, зарегистрированный в ØMQ Poller, должен иметь явный «if block» для его обработки.

Это становится громоздким, когда вы начинаете писать большие программы.Я хотел бы добавить - «немного некрасиво»

С помощью циклов обработки событий это становится более упорядоченным, поскольку вы можете регистрировать обратные вызовы для получения и отправки данных, и вы можете структурировать свой обратный вызов в другом месте.

У меня есть следующие примеры из учебника, который я пишу.

  1. http://learning -0mq-with-pyzmq.readthedocs.org / en / latest / pyzmq / multisocket / zmqpoller.html
  2. http://learning -0mq-with-pyzmq.readthedocs.org / en / latest / pyzmq / multisocket / tornadoeventloop.html

Другие могутдобавьте это понимание или исправьте его.

...