[zeromq-dev] CZMQ Python Bindings

Michel Pelletier pelletier.michel at gmail.com
Wed Oct 9 04:28:40 CEST 2013


Wanting to know more about Python and CFFI, I decided to do a
straightforward wrap job for Python around the CZMQ C API.  I have it
reasonable complete enough to write some simple code and tests.  I've
pushed it up to github:

https://github.com/michelp/pyczmq

Most of the core functionality, zctx, zsocket, zsockopt, zpoller, zmsg,
zframe, zstr, zloop, zbeacon, zcert, zauth, are exposed as both straight
wrappers around the C interface as well as some namespaced functions that
provide a high level functional interface (eg, turning cdata char * into
python byte strings, etc).  For example:

    ctx = zctx.new()
    push = zsocket.new(ctx, zsocket.PUSH)
    pull = zsocket.new(ctx, zsocket.PULL)
    zsocket.bind(push, 'inproc://test')
    zsocket.connect(pull, 'inproc://test')
    zstr.send(push, 'foo')
    assert zstr.recv(pull) == 'foo'
    zstr.send(push, 'bar')
    zsocket.poll(pull, 1)
    assert zstr.recv_nowait(pull) == 'bar'



There's also a first stab at providing an OO interface in the form of
Context, Socket, Beacon and Loop classes.  Here's a working example:

    ctx = Context()
    pub = ctx.socket('PUB')
    sub = ctx.socket('SUB')
    sub.set_subscribe('')
    pub.bind('inproc://zoop')
    sub.connect('inproc://zoop')
    pub.send('foo')
    sub.poll(1)
    assert sub.recv() == 'foo'


This is a work in progress, it's useful enough now to create socket and
messages and send and receive data.  I'd certainly love any form of help,
just send me a pull request.  Featured desired are way more tests!  And of
course any missing functions that need wrapping, or new functionality.

Thanks and enjoy,

-Michel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20131008/9ca3c8ce/attachment.htm>


More information about the zeromq-dev mailing list