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