Pyslvs 開發進度
- 改善 Server 突然關閉的狀況
ZMQ 防止連線中斷
使用 PyZMQ 提供的 Poll 類型檢測連線狀況:
Client
import zmq context = zmq.Context() socket_port = "tcp://localhost:8000" socket = context.socket(zmq.REQ) socket.bind(socket_port) poll = zmq.Poller() poll.register(self.socket, zmq.POLLIN) while True: if socket.closed: #Reconnecting socket = context.socket(zmq.REQ) socket.bind(socket_port) poll.register(socket, zmq.POLLIN) socket.send_string("Hello!") while True: socks = dict(poll.poll(100)) if socks.get(socket)==zmq.POLLIN: """Connected.""" return socket.recv() else: """Connection interrupt.""" socket.setsockopt(zmq.LINGER, 0) socket.close() poll.unregister(socket) #Socket will be deleted. return my_fun()
上面的程式碼中,若是沒有關閉 socket 或是斷線沒有重新連接,ZMQ 皆會回傳 Exception。
主要是解決 Server 中途斷線導致程式中斷,會自行運算彌補。
不過如果全部 Server 離線,Client 端仍會繼續等待 Server 連進來,會想辦法解決。
再來就是 Python 執行速度問題,Python 演算法要再改寫並優化,接下來會針對三種演算法加以改良。
Comments
comments powered by Disqus