请解释Zeromq eventloop

Jes*_*ose 4 zeromq

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

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

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

    if socks.get(work_receiver) == zmq.POLLIN:
        ...
Run Code Online (Sandbox Code Playgroud)

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


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

pyf*_*unc 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

其他人可以增加这种理解或纠正它.