请解释Zeromq eventloop

时间:2011-09-28 08:32:50

标签: zeromq

如何通过POLLIN多路复用多个插座?

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

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

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

如何使侦听线程更可靠,更易于处理?


背景:我正在推出自己的API服务器并想知道如何制作控制器(从外部源接收请求的部分以及来自工作人员的控制信号)

1 个答案:

答案 0 :(得分:6)

ØMQPoller可用于服务多个套接字并与之通信。

然而,使用ØMQPoller,您最终会使用显式块(在if循环下)来处理套接字。使用ØMQPoller注册的每个套接字都必须有一个明确的“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
  3. 其他人可以加入这种理解或纠正它。