I'm using pyzmq 2.0.10 backed by zeromq-2.0.10 with the stock python 2.6.6 provided with Ubuntu 10.10 desktop 32-bit. The manpage for zmq_socket reads:
When a ZMQ_PUSH socket enters an exceptional state due to having
reached the high water mark for all downstream nodes, or if there
are no downstream nodes at all, then any zmq_send(3) operations on
the socket shall block until the exceptional state ends or at least
one downstream node becomes available for sending; messages are not
However, I'm not getting blocking behavior when I shut off my PULLer. This is for the case without HWM. I read the above to say that when there is no downstream node, my PUSHer should block. Instead, it keeps on queuing up messages, which it faithfully delivers upon starting/restarting the receiver.
Here are the test scripts: