Python使用正确的套接字

时间:2018-12-03 22:10:16

标签: python python-2.7 sockets google-app-engine websocket

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

我需要这个套接字连接,以便每当有更新时,就会有一个恒定的连接并将当前数据流发送回用户。

我已经阅读了一些文档,有关套接字的Google App Engine文档建议使用套接字库。但是在文档的底部,他们提供了一个示例应用程序,该示例应用程序将Google App Engine与套接字一起使用,但是示例应用程序中的套接字是由nntplib而非socket制成的。可以创建/使用套接字的Python库有多少个,我应该使用哪种套接字进行这种连接。

它在python docs nntplib中表示用于实现新闻阅读器或海报,因此我不确定这是否是我应该用于将在线用户的当前数据发回给在线用户的正确套接字连接类型前端。

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

我应该只使用

socket.socket()

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

2 个答案:

答案 0 :(得分:0)

如果我很了解您所需的连接类型,那么Websockets是一个好主意,因此您可以创建全双工通信通道。但是,Google App Engine(GAE)尚不支持Websockets。根据此post,它将很快用于GAE Flexible。

GAE中有一个Websocket的功能请求,您可以在此link

中跟踪更新

同时,如果您需要Websocket,则必须使用Compute Engine instances

关于GAE中对套接字的支持,您可以使用任何导入套接字的库(poplib,nntplib等),而这些库不违反here中列出的某些限制。

答案 1 :(得分:0)

我的最初意图是不使用@dhauptman建议的许多优质服务或收费之类的附加服务或费用,但根据针对套接字的Google App Engine文档(Python 2.7)看来: Python Sockets Google App Engine

由于套接字仅支持出站套接字,因此我可以只创建带有订阅事件的套接字连接,并且只要事件发生并更新,就可以向API查询任务处理程序并将其作为响应发送回去。

>

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