GAE 可以限制我的 websocket 连接吗?
Can GAE restrict my websocket connections?
我使用 websocket_client python 应用程序和以下代码 -
ws = websocket.WebSocket(sslopt={"cert_reqs": ssl.CERT_NONE})
ws.connect("wss://something.synology.me:1111")
ws.send(json.dumps({
'token': device_token,
'payload': {'volume': 0.5}
}))
ws.close()
有时运行良好,有时会出现以下错误 -
WebSocketAddressException: [Errno -2] Name or service not known
昨天它或多或少工作正常(假设两次尝试工作一次),但今天根本不工作。我已经尝试 运行 使用本地 Google App Engine 的相同代码 - 它运行良好。
GAE 服务器是否可能以某种方式限制了我的连接?我应该检查什么?
更新。进一步分析,这个问题可能是由这个part of code:
引起的
def _get_addrinfo_list(hostname, port, is_secure, proxy):
phost, pport, pauth = get_proxy_info(
hostname, is_secure, proxy.host, proxy.port, proxy.auth, proxy.no_proxy)
try:
if not phost:
addrinfo_list = socket.getaddrinfo(
hostname, port, 0, socket.SOCK_STREAM, socket.SOL_TCP)
return addrinfo_list, False, None
else:
pport = pport and pport or 80
addrinfo_list = socket.getaddrinfo(phost, pport, 0, socket.SOCK_STREAM, socket.SOL_TCP)
return addrinfo_list, True, pauth
except socket.gaierror as e:
raise WebSocketAddressException(e)
即运行宁 socket.getaddrinfo 在 GAE 上可能是问题所在。
问题出在计费上 - 未启用,因此套接字无法正常工作。
我使用 websocket_client python 应用程序和以下代码 -
ws = websocket.WebSocket(sslopt={"cert_reqs": ssl.CERT_NONE})
ws.connect("wss://something.synology.me:1111")
ws.send(json.dumps({
'token': device_token,
'payload': {'volume': 0.5}
}))
ws.close()
有时运行良好,有时会出现以下错误 -
WebSocketAddressException: [Errno -2] Name or service not known
昨天它或多或少工作正常(假设两次尝试工作一次),但今天根本不工作。我已经尝试 运行 使用本地 Google App Engine 的相同代码 - 它运行良好。
GAE 服务器是否可能以某种方式限制了我的连接?我应该检查什么?
更新。进一步分析,这个问题可能是由这个part of code:
引起的def _get_addrinfo_list(hostname, port, is_secure, proxy):
phost, pport, pauth = get_proxy_info(
hostname, is_secure, proxy.host, proxy.port, proxy.auth, proxy.no_proxy)
try:
if not phost:
addrinfo_list = socket.getaddrinfo(
hostname, port, 0, socket.SOCK_STREAM, socket.SOL_TCP)
return addrinfo_list, False, None
else:
pport = pport and pport or 80
addrinfo_list = socket.getaddrinfo(phost, pport, 0, socket.SOCK_STREAM, socket.SOL_TCP)
return addrinfo_list, True, pauth
except socket.gaierror as e:
raise WebSocketAddressException(e)
即运行宁 socket.getaddrinfo 在 GAE 上可能是问题所在。
问题出在计费上 - 未启用,因此套接字无法正常工作。