2011-09-28 66 views
3

与通过POLLIN复用多个套接字有何不同?请解释Zeromq eventloop

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

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

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

它如何使侦听器线程更可靠,更容易处理?


背景:我是我自己的滚动API服务器,不知道如何使控制器(即从工人接收来自外部源和控制信号的请求的部分)

+0

我不完全清楚你'多路复用多个插座'的含义。你能澄清你想知道的吗?你是否想要澄清poll()方法的作用?看起来您正在使用pyzmq,在这种情况下,如果您想要一个eventloop,您可以在[zmq.eventloop](http://zeromq.github.com/pyzmq/eventloop.html)中查看捆绑的龙卷风事件回滚, – minrk

回答

5

ØMQ轮询可用于服务和与多个套接字进行通信。

如何使用ØMQ轮询器,最终得到显式块(在if循环下)来处理套接字。每个使用ØMQ轮询器注册的套接字都必须有一个明确的“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

其他人可以添加到这种认识或纠正。