2012-05-15 5 views
0

eventlet 및 zeromq PUSH/PULL 소켓을 사용하여 수신기/송신기 쌍을 생성하려고합니다.zeromq가있는 이벤트 릿 PUSH/PULL이 예상대로 작동하지 않습니다.

import eventlet 
from eventlet.green import zmq 
from eventlet import sleep as gsleep 

#=============================================================================== 
# config 
#=============================================================================== 
ctx = zmq.Context() 
adr = 'tcp://127.0.0.1:5558' 

#=============================================================================== 
# listener 
#=============================================================================== 
def listen(addr): 
    l = ctx.socket(zmq.PULL) 
    l.connect(addr) 
    print 'listening on %s' % addr 
    while True: 
     data = l.recv() 
     print 'something received : %s' % data 

eventlet.spawn_n(listen, adr) 

#=============================================================================== 
# sender 
#=============================================================================== 
s = ctx.socket(zmq.PUSH) 
s.connect(adr) 
while True: 
    gsleep(1) 
    print "sending something" 
    s.send('blabla') 

I 출력을 받고 있어요 :

코드입니다

대신 예상의
listening on tcp://127.0.0.1:5558 
sending something 
sending something 
sending something 
sending something 
sending something 
sending something 
... 

:

listening on tcp://127.0.0.1:5558 
sending something 
something received : blabla 
sending something 
something received : blabla 
sending something 
something received : blabla 
... 

내가 무엇을 놓치고?

답변

1
당신은 바인딩을 사용하는 대신에 따라서, 보낸 사람의 소켓 연결해야

:

s.connect(adr) 

변경해야에 :

s.bind(adr)