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!" Thanks a lots for any help! Best Regards, -- François-Xavier Bourlet _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
