Trong python, tôi đang sử dụng như sau:zeromq và bind_to_random_port - làm thế nào để có được cổng chọn
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.???????
Làm thế nào để biết những gì cổng được chọn? Tôi sẽ có một bảng tra cứu trong redis cho các công nhân để đọc.
Tôi đang sử dụng mô hình kéo đẩy. Tôi cần phải cho nhân viên biết cổng nào để kết nối.
Tôi phải làm điều này bởi vì tôi đang sử dụng vòng lặp gevent trong uwsgi và chỉ định một luồng mù thuần túy và lỗi do một ngã ba. Nếu sử dụng bind_to_random_port thì một cổng được chọn, tôi chỉ không biết cái nào.
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
tham khảo: http://zeromq.github.com/pyzmq/api/zmq.html#zmq.Socket.bind_to_random_port – odigity