libuv interface for ZeroMQ for your Python programs.
With uzmq you can use zmq sockets with the libuv event loop binding proposed by the pyuv library
Note
uzmq source code is hosted on Github
Example of an echo server using a Poll handle:
import pyuv
import zmq
import uzmq
loop = pyuv.Loop.default_loop()
ctx = zmq.Context()
s = ctx.socket(zmq.REP)
s.bind('tcp://127.0.0.1:5555')
def rep_handler(handle, events, errors):
# We don't know how many recv's we can do?
msg = s.recv()
# No guarantee that we can do the send. We need a way of putting the
# send in the event loop.
s.send(msg)
poll = uzmq.ZMQPoll(loop, s)
poll.start(pyuv.UV_READABLE, rep_handler)
loop.run()
The same but using a ZMQ handle:
import pyuv
import zmq
import uzmq
loop = pyuv.Loop.default_loop()
ctx = zmq.Context()
s = ctx.socket(zmq.REP)
s.bind('tcp://127.0.0.1:5555')
stream = uzmq.ZMQ(loop, s)
def echo(handle, msg, err):
print " ".join(msg)
stream.write_multipart(msg)
stream.start_read(echo)
loop.run()
Contents: