什么是Python Server发送的事件返回格式?

时间:2016-02-04 22:29:43

标签: python django real-time

我有一个使用Server-Sent Events和redis pubsub系统的django项目。 代码如下:

我使用JavaScript代码

打开事件
var eventSource = new EventSource("/tweets/stream");

eventSource.addEventListener('message', function(e) {
    console.log(message) 
}, false);

然后在我的python代码中,我使用redis订阅来处理它。当我获得新数据并响应请求时。没有数据显示。所以我认为我的回复格式存在问题。

def stream(request):
   def stream_data():
      REDIS_CONF = {
          'host': 'localhost',
          'port': 6379,
          'db': 1,
     }
     red = redis.StrictRedis(**REDIS_CONF)
     pubsub = red.pubsub()
     pubsub.subscribe('@NBA')
     for message in pubsub.listen():
        long_string = '''
        id: 123 \n\n
        data: 123123123 \n
        '''
        return long_string

    return HttpResponse(stream_data(), content_type="text/event-stream")

1 个答案:

答案 0 :(得分:1)

from django.http import HttpResponse, StreamingHttpResponse
...
...
return StreamingHttpResponse(stream_data(), content_type="text/event-stream")

使用StreamingHttpResponse而不是HttpResponse将解决此问题。