GAE 可以限制我的 websocket 连接吗?
Posted
技术标签:
【中文标题】GAE 可以限制我的 websocket 连接吗?【英文标题】:Can GAE restrict my websocket connections? 【发布时间】:2020-02-03 19:30:01 【问题描述】:我使用 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)
即在 GAE 上运行 socket.getaddrinfo 可能是问题所在。
【问题讨论】:
这是标准环境和python2.7吗?检查limitations。 @EmilGi,是的,这是标准环境和 python 2.7。我已经了解了这些限制,但我不确定“付费应用”——但正如我所说——有时它可以工作,这很奇怪。 在本地工作但不在部署中工作只能意味着这是一些 Python2 标准环境限制。我只能建议迁移到 Python3,因为不再支持 Python2。 @EmilGi,感谢您的帮助。问题出在计费上 - 它未启用。奇怪的是,GAE 方面没有正常处理这种情况 - 可能会有一些更好的错误消息。 【参考方案1】:问题在于计费 - 未启用,因此套接字无法正常工作。
【讨论】:
以上是关于GAE 可以限制我的 websocket 连接吗?的主要内容,如果未能解决你的问题,请参考以下文章