首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有好的Django插件/模块可以给你的应用程序添加Server Sent Event支持?

有没有好的Django插件/模块可以给你的应用程序添加Server Sent Event支持?
EN

Stack Overflow用户
提问于 2012-02-03 21:39:31
回答 2查看 1.2K关注 0票数 1

我找到了这个:http://www.niwi.be/post/django-sse-html5-server-sent-events-django/,但它看起来相当粗糙,并且版本0.2并不能让我对它充满信心。

我知道SSE支持并不是严格意义上的科学,所以它可能不是必需的,但我想我应该看看其他人是否知道有其他项目或模块可以提供帮助。

我正在寻找一个常用的模块建议或一个坚定的“自己动手”类型的答案。

EN

回答 2

Stack Overflow用户

发布于 2014-03-12 18:31:15

示例Django SSE视图:

代码语言:javascript
复制
class SSEView(View):
def  dispatch(self, request):
    response = http.StreamingHttpResponse(streaming_content=self.iterator(request=request), content_type="text/event-stream")
    response['Cache-Control'] = 'no-cache'
    response['connection'] = 'keep-alive'
    return response

def iterator(self, request):
    """
    Yield unseen events (based on session timestamp)
    """
    user = request.user
    while True:
        user_ts = request.session.get("user_ts")    # Last seen
        sse = EVENT.find_one({
            "ts": {"$gt" : user_ts},                # New event, after last-seen
            "user_id": user._id},                   # Only requester's event
        })
        if not sse:
            time.sleep(random())
        else:
            yield sse
            request.session["user_ts"] = sse["ts"]  # Overwrite latest event time
票数 0
EN

Stack Overflow用户

发布于 2015-05-05 20:24:01

要在SSE中支持压缩,可以添加Django装饰器"gzip_page“。请参见下面的代码示例:

代码语言:javascript
复制
from django.views.decorators.gzip import gzip_page
from django.utils.decorators import method_decorator
...
class SSEView(View):
@method_decorator(gzip_page)
def  dispatch(self, request):
   pass

使用修饰器的原因是Django中不允许逐跳HTTP头部"Transfer-Encoding“。

您可以在其他允许使用header的Python框架中使用header。

代码语言:javascript
复制
response["Transfer-Encoding"] = "chunked"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9129521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档