seçilmiş olsun, ben kullanıyorum şu:zeromq ve bind_to_random_port - nasıl liman python'da
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.???????
nasıl seçilir hangi bağlantı noktasını biliyoruz? İşçilerin okuması için redis tablosuna bakacağım.
Bir itme çekme modelini kullanıyorum. Çalışanların hangi bağlantı noktalarına bağlanacağını bilmelerine izin vermeliyim.
Bunu yapmak zorundayım çünkü uwsgi'deki gevent döngüyü kullanıyorum ve düz bir kör thows ve bir çatal hatası hatası belirtiyorum. Bir bind_to_random_port kullanın ve sonra bir port seçilirse, hangisi olduğunu bilmiyorum.
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
referans: http://zeromq.github.com/pyzmq/api/zmq.html#zmq.Socket.bind_to_random_port – odigity