首页 > 解决方案 > Python 使用正确的套接字

问题描述

我正在使用 Google Cloud 和 Google App Engine,并且我希望我们的服务 API 之一使用socket连接而不是常规 HTTP 连接,在该连接中接收请求并在每次查询时发送一次响应。

我需要这个套接字连接,以便在更新时将持续连接和当前数据流发送回用户。

我已经阅读了几份文档,Google App Engine docs for sockets 建议使用套接字库。但是在文档的底部,他们提供了一个使用带有套接字的 Google App Engine 的示例应用程序,但是示例应用程序中的套接字是由nntplib而不是socket. 有多少 python 库可以制作/使用套接字以及我应该使用哪个套接字进行这种连接。

它在 python 文档nntplib中说用于实现新闻阅读器或海报,所以我不确定这是否是我应该使用的正确套接字连接类型,用于将在线用户的当前数据发送回前端用户。

https://docs.python.org/2/library/nntplib.html

我应该使用

socket.socket()

编辑: https ://cloud.google.com/appengine/docs/standard/python/sockets/#making_httplib_use_sockets

标签: pythonpython-2.7socketsgoogle-app-enginewebsocket

解决方案


我的初衷是不使用任何额外的服务或费用,例如@dhauptman 建议的许多很棒的服务或费用,但似乎根据 Google App Engine docs for sockets (Python 2.7): Python Sockets Google App Engine

似乎由于套接字仅支持出站套接字,我可以只创建一个带有订阅事件的套接字连接,并且每当事件发生和更新时,只需查询 API 以获取任务处理程序并将其作为响应发送回来。

另一种选择是使用 httplib 库而不是 Google App Engines urlfetch。使用 httplib 库时,可以在 app.yaml 文件中配置为使用套接字连接。这将克服达到 urlfetch 限制的问题。


推荐阅读