[zeromq-dev] ZMQ_FD, missing events

MinRK benjaminrk at gmail.com
Wed Nov 30 00:56:34 CET 2011

On Tue, Nov 29, 2011 at 15:36, Francois-Xavier Bourlet <fx at dotcloud.com>wrote:

> Hello,
> First, let me tell you how much we appreciate and use ZMQ here, at
> dotCloud. We have developed an RPC protocol/system based on ZMQ.
> System for which we have an implementation in Python and nodejs. Our
> whole platform communication exclusively pass trough ZMQ.
> We never had major issue with ZMQ, and everything was working well
> until... I tried to implement a Python Gevent version of our RPC
> system.
> First, some versions details:
>  - linux platform x86_64
>  - zmq >= 2.1.10 (git master as today
> 35df57cda6861cac31710ad2a10fae4c97c0e63c)
>  - pyzmq == v2.1.7.1
>  - gevent == 0.13.6
>  - python 2.7
> I have a tiny wrapper around PythonZMQ to make it compliant with
> gevent (coroutine) style programming.
> To integrate ZMQ into the gevent mainloop, I am using the fd returned
> by getsockopt(ZMQ_FD) and sometimes the fd is never notified that the
> state (getsockopt(ZMQ_EVENTS)) of the socket changed. Hence my code is
> waiting infinitely.

> Code speak better than words: http://pastebin.com/r3tiywzb
> This code will run a simple pong server (REP) and an *asynchronous*
> client (DEALER/XREQ).
> The client will keep sending messages, and keep receive messages
> without taking care of any orders.
> When I run this program on my machine, after few second, the receiver
> part of the client block while waiting for some event about new
> message available, but the event was never fired. When this case
> happen the program exit with the following message: "here we go,
> nobody told me about new messages!"

Are you aware that the ZMQ_FD is edge-triggered, and not level-triggered?

That means that you must process *all* available events when the event is

If  ≥2 recvs are waiting, and you only process one, then the POLLIN event
will never fire again, hence an infinite wait.

You might check out Travis Cline's
which is meant to take care of exactly this.


> Thanks a lots for any help!
> Best Regards,
> --
> François-Xavier Bourlet
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20111129/d9e09c8e/attachment.htm>

More information about the zeromq-dev mailing list