Python zeromq推/拉的Eventlet未按预期工作
我正在尝试使用eventlet和zeromq推/拉套接字创建侦听器/发送器对 代码如下:Python zeromq推/拉的Eventlet未按预期工作,python,zeromq,eventlet,Python,Zeromq,Eventlet,我正在尝试使用eventlet和zeromq推/拉套接字创建侦听器/发送器对 代码如下: import eventlet from eventlet.green import zmq from eventlet import sleep as gsleep #=============================================================================== # config #=============================
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')
我得到了输出:
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
...
我缺少什么?对于发送方套接字,您应该使用bind而不是connect,因此:
s.connect(adr)
应改为:
s.bind(adr)