Zeromq and bind_to_random_port - how to choose a port

In python, I use the following:

context = zmq.Context() socket = context.socket(zmq.PUSH) socket.bind_to_random_port('tcp://*', min_port=6001, max_port=6004, max_tries=100) port_selected = socket.??????? 

How to find out which port is selected? I will have a lookup table in redis to be read by workers.

I am using the push pull model. I need to tell employees which ports to connect.

I have to do this because I use the gevent loop in uwsgi and point out equal blind carcass and fork error. If you use bind_to_random_port, then the port will be deleted, I just don't know what.

 Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/gevent-1.0b2-py2.7-linux-x86_64.egg/gevent/greenlet.py", line 328, in run result = self._run(*self.args, **self.kwargs) File "/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbUwsgiPixelServer/uwsgiPixelServer.py", line 43, in sendthis socket.send(push) File "/usr/local/lib/python2.7/dist-packages/zmq/green/core.py", line 173, in send self._wait_write() File "/usr/local/lib/python2.7/dist-packages/zmq/green/core.py", line 108, in _wait_write assert self.__writable.ready(), "Only one greenlet can be waiting on this event" AssertionError: Only one greenlet can be waiting on this event <Greenlet at 0x2d41370: sendthis('2012-07-02 04:05:15')> failed with AssertionError 
+7
source share
1 answer
 port_selected = socket.bind_to_random_port('tcp://*', min_port=6001, max_port=6004, max_tries=100) 
+13
source

All Articles