在我的Tornado應用中,在某些情況下,某些客戶端與服務器斷開連接,但我當前的代碼未檢測到客戶端與服務器斷開連接。我目前使用ping來查明客戶端是否斷開連接。 這裏是我的乒乓代碼:如何在龍捲風中設置連接超時?
from threading import Timer
class SocketHandler(websocket.WebSocketHandler):
def __init__(self, application, request, **kwargs):
# some code here
Timer(5.0, self.do_ping).start()
def do_ping(self):
try:
self.ping_counter += 1
self.ping("")
if self.ping_counter > 2:
self.close()
Timer(60, self.do_ping).start()
except WebSocketClosedError:
pass
def on_pong(self, data):
self.ping_counter = 0
現在我想設置SO_RCVTIMEO在龍捲風而不是使用乒乓方法。 這樣的事情:
sock.setsockopt(socket.SO_RCVTIMEO)
是否有可能在Tornado中設置SO_RCVTIMEO爲特定超時後從服務器關閉客戶端?
@amn如何在Tornado中使用'socket.SO_RCVTIMEO'?我閱讀了文檔,但找不到有用的東西。 – shotgunner