w Pythonie, używam następujące:zeromq i bind_to_random_port - jak zdobyć portu wybrany
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.???????
Skąd mam wiedzieć, co port jest wybrany? Będę miał tabelę do przeglądania, aby pracownicy mogli ją przeczytać.
Używam modelu push pull. Muszę poinformować pracowników, z którymi portami się połączyć.
Muszę to zrobić, ponieważ używam pętli gevent w uwsgi i określam zwykły niewidomych thows i błąd spowodowany widelcem. Jeśli użyjesz bind_to_random_port, a port zostanie wybrany, po prostu nie wiem, który.
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
referencyjny: http://zeromq.github.com/pyzmq/api/zmq.html#zmq.Socket.bind_to_random_port – odigity