ZeroMQ kullanırken python uygulamasını kapatma konusunda bir sorunum var. önce çalışmıyor bir sunucuya bağlanıyorum!ZeroMQ'yi ölü sunucuyla kullanırken python komut dosyasının sonlandırılması
context = zmq.Context()
socket = context.socket(zmq.REQ)
socket_id = randomID()
socket.setsockopt(zmq.IDENTITY, socket_id)
socket.connect("tcp://dead_server")
poller = zmq.Poller()
poller.register(socket, zmq.POLLIN)
ve
sockets = dict(poller.poll(1000))
if sockets.get(socket) == zmq.POLLIN:
result = socket.recv()
print (result)
cevapta
bekliyor mesajımısocket.send(msg)
gönderme böylece sunucu mesaj göndermez edilecek öldü ve hiçbir cevap yoktur. bu doğrudur. sonra soketi kapatıyorum ve pollerden siliyorum sonra yeni sunucu ile canlı sunucuya bağlanın ve ben soket tarafından mesaj gönderirim ve ondan cevap alırım.
poller.unregister(socket)
socket.close()
socket = context.socket(zmq.REQ)
socket.setsockopt(zmq.IDENTITY, socket_id)
poller.register(socket, zmq.POLLIN)
socket.connect("tcp://alive_server")
socket.send(msg)
sockets = dict(poller.poll(1000))
if sockets.get(socket) == zmq.POLLIN:
result = socket.recv()
print (result)
# Every thing ok up to hear
ondan sonra uygulama (python komut dosyası) kapalı değil (sonlandırmak)! bu benim problemim. [sig_term
ile uygulamayı kapatabilirim ama bir sebepten dolayı kullanmayacağım.] Eğer ölü sunucuya ilk mesaj göndermediğimde uygulama gerçekten kapalı. Sanırım sorun ZeroMQ io iş parçacığı ama çözemiyorum.
exit(0) # Not worked
sys.exit(0) # Not worked
tnx, işe yaradı. – GHHT