2011-09-28 54 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

其他人可以添加到這種認識或糾正。