Django和Long轮询
我需要在我的应用程序中实现长轮询来检索事件。但是我不知道怎么做。我知道长轮询的概念,即在事件发生之前保持连接打开。但是我如何在我的项目中实现这一点呢。如果你能给我一个简单的关于客户端和我想的观点的长轮询示例,我将非常感激。谢谢大家! 免责声明:这个答案早已过时。到2020年,解决这一问题的方法有很多,只是其中一种选择Django和Long轮询,django,comet,long-polling,cometd,Django,Comet,Long Polling,Cometd,我需要在我的应用程序中实现长轮询来检索事件。但是我不知道怎么做。我知道长轮询的概念,即在事件发生之前保持连接打开。但是我如何在我的项目中实现这一点呢。如果你能给我一个简单的关于客户端和我想的观点的长轮询示例,我将非常感激。谢谢大家! 免责声明:这个答案早已过时。到2020年,解决这一问题的方法有很多,只是其中一种选择 不清楚你想要什么。。。至少不会me@JoranBeasley还有:@JoranBeasley嗨!我有一个用户上传视频的应用程序。所以当有人上传一段视频时,我想通知其他用户一段新的视
不清楚你想要什么。。。至少不会me@JoranBeasley还有:@JoranBeasley嗨!我有一个用户上传视频的应用程序。所以当有人上传一段视频时,我想通知其他用户一段新的视频已经上传,比如twitter、facebook或者其他。另外,如果有人对他们的视频发表评论,我想通知用户。但我认为我可以做到这一点,如果我知道如何实现长轮询,并通知用户新上传的视频。所以,我需要知道的是,实现长轮询来通知用户数据库中正在保存的新对象。希望我是清楚的。请问我是不是。谢谢。您指向websocket解决方案的链接已断开。我使用ajax从客户端实现了类似于Django的东西。但仍然存在超时的问题。gevent是一个可能的(好的)解决方案吗?我已经修复了链接。gevent是一个好的解决方案吗?视情况而定。你应该很好地理解greenlet是如何工作的,否则你可能会遇到非常奇怪的问题:你的链接指向一个项目,其中最后一次提交可以追溯到7个月。看起来不太活跃。
import time
def long_polling_view(request):
for i in range(30): #e.g. reopen connection every 30 seconds
if something_happened():
...
return http.HttpResponse(
arbitrary_JSON_content,
mimetype='application/javascript'
)
time.sleep(1)
return http.HttpResponse({}, mimetype='application/javascript')