【发布时间】:2017-09-15 15:28:41
【问题描述】:
在某些情况下,在我的 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
现在我想在 tornado 中设置 SO_RCVTIMEO 而不是使用乒乓球方法。
像这样:sock.setsockopt(socket.SO_RCVTIMEO)
是否可以在 Tornado 中为关闭客户端在特定超时后设置 SO_RCVTIMEO ?
【问题讨论】:
-
@amn 如何在 Tornado 中使用
socket.SO_RCVTIMEO?我阅读了文档,但找不到有用的东西。
标签: python sockets websocket tornado ping