在Python的Google App Engine中实现Comet/服务器推送

25

我该如何在Python的Google App Engine中实现Comet/服务器推送?

6个回答

69
我们刚刚宣布了Channel API,用于在App Engine应用程序中进行推送:http://googleappengine.blogspot.com/2010/05/app-engine-at-google-io-2010.html 如果您在Google IO,请注意明天下午1点我将在API轨道上谈论这个问题:http://code.google.com/events/io/2010/sessions/building-real-time-apps-app-engine-feed-api.html 以下是该会话的YouTube视频:http://www.youtube.com/watch?v=oMXe-xK0BWA 希望这是最后一次更新!现在已发布:code.google.com/appengine/docs/python/channel

非常抱歉昨天错过了那个演讲(因为有太多好的重叠演讲!)。关于这个功能的文档何时会发布或者何时能够供我们使用,有什么消息吗? - npdoty
演讲本身将在下周(我想)在YouTube上发布,并包含API的详细信息。没有具体的启动日期,但如果您想注册受信任的测试人员,可以在此处进行注册:https://spreadsheets.google.com/viewform?formkey=dGFxQ1A4T1BSYWxNdFlYVFhUcmg2amc6MQ - Moishe Lettvin
请问您能否提供视频链接? - Alon Gubkin
一旦视频发布到Google IO网站上,我会在这里贴上链接。(我同时期待和害怕看到自己的视频...) - Moishe Lettvin
3
你能否告诉我们何时能够开始使用这个东西呢? :) - Alfred
1
点上i,划下t...很快就会看到这个。 - Moishe Lettvin

3

目前来看,在App Engine(任何语言)中不建议使用Comet技术。Comet基于长连接的HTTP,但是在App Engine中单个连接最多只能保持30秒左右,很难想象还有比这更糟糕的匹配方式!


11
这个回答已经不再相关,Moishe的回答是正确的。 - Paul de Vrieze
Moishe的回答很快就不再相关了,Channel API计划在2017年10月关闭。 - Suma

2

尽管已经发布,但AppEngine仍然可以使用此API构建聊天机器人,但它仍不允许长轮询。 - Bartosz Radaczyński
你说得对。需要另一个服务器将客户端长轮询转换为XMPP消息。最近发布的Tornado框架似乎是一个不错的选择! - mainsocial

1

30秒已经足够了;无论如何,当时间过去且没有新事件发生时,您应该返回一个无操作消息。

这可以防止客户端超时,并且每个使用comet的人都会这样做。

只需发送请求,在服务器上等待事件或在25秒后超时即可。


0
Google App Engine自12月2日起支持使用Channel API进行服务器推送。

0

在查看App Engine 1.3.8-pre版本时,我发现了Channel API服务存根和更多代码。因此,我们可以开始在本地尝试它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接