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

Reply via email to