asyncio

Module: zmq.asyncio

AsyncIO support for zmq

Requires asyncio and Python 3.

New in version 15.0.

As of 15.0, pyzmq now supports asyncio, via zmq.asyncio. When imported from this module, blocking methods such as zmq.asyncio.Socket.recv_multipart(), zmq.asyncio.Socket.poll(), and zmq.asyncio.Poller.poll() return Future s.

It also provides a zmq.asyncio.ZMQEventLoop.

import asyncio
import zmq
import zmq.asyncio

ctx = zmq.asyncio.Context()
loop = zmq.asyncio.ZMQEventLoop()
asyncio.set_event_loop(loop)

@asyncio.coroutine
def recv_and_process():
    sock = ctx.socket(zmq.PULL)
    sock.bind(url)
    msg = yield from sock.recv_multipart() # waits for msg to be ready
    reply = yield from async_process(msg)
    yield from sock.send_multipart(reply)

loop.run_until_complete(recv_and_process())

Classes

ZMQEventLoop

An asyncio event loop using zmq_poll for zmq socket support.

class zmq.asyncio.ZMQEventLoop(selector=None)

AsyncIO eventloop using zmq_poll

Context

Context class that creates Future-returning sockets. See zmq.Context for more info.

class zmq.asyncio.Context(io_threads=1, **kwargs)

Context for creating asyncio-compatible Sockets

Socket

Socket subclass that returns asyncio.Future s from blocking methods, for use in coroutines and async applications.

See also

zmq.Socket for the inherited API.

class zmq.asyncio.Socket(context, socket_type, io_loop=None)

Socket returning asyncio Futures for send/recv/poll methods.

recv(flags=0, copy=True, track=False)

Receive a single zmq frame.

Returns a Future, whose result will be the received frame.

Recommend using recv_multipart instead.

recv_multipart(flags=0, copy=True, track=False)

Receive a complete multipart zmq message.

Returns a Future whose result will be a multipart message.

send(msg, flags=0, copy=True, track=False)

Send a single zmq frame.

Returns a Future that resolves when sending is complete.

Recommend using send_multipart instead.

send_multipart(msg, flags=0, copy=True, track=False)

Send a complete multipart zmq message.

Returns a Future that resolves when sending is complete.

poll(timeout=None, flags=1)

poll the socket for events

returns a Future for the poll results.

Poller

Poller subclass that returns asyncio.Future s from poll, for use in coroutines and async applications.

See also

zmq.Poller for the inherited API.

class zmq.asyncio.Poller

Poller returning asyncio.Future for poll results.

poll(timeout=-1)

Return a Future for a poll event