2017-01-09 13 views
5

Я пытаюсь реализовать события отправления сервера (SSE) в Django Framework. Это ясно мне, что я могу реализовать view так:Использование Django Server Отправленные события с записью базы данных save

@csrf_exempt 
def event_stream(request): 
    def eventStream(): 
     yield "data:Server Sent Data\n\n" 

    response = HttpResponse(eventStream(), content_type="text/event-stream") 
    response['Cache-Control'] = 'no-cache' 
    return response 

Но я хочу, чтобы вызвать вызов SSE всякий раз, когда новая запись в таблице базы данных, из post_save стола, как я мог бы быть в состоянии добиться этого здесь, так как eventStream здесь является функцией генератора.

ответ

7

Джанго строится вокруг цикла запрос/ответ, что означает, что он не очень хорошо работает с WebSockets или даже SSE. В вашем примере нет способа распространить сигнал post_save на представление, если вы не используете подписку на очередь (rabbitmq, redis pubsub) в представлении и отправляете данные в обработчике сигналов.

Рассмотрим другие решения, чтобы подтолкнуть от сервера:

  • Long избирательном
  • Django channels
  • asynchronus решение как nodejs или торнадо вместо или вместе с Django
+0

Среди всех, Джанго каналов является опрятная. – Shubham