Как закрыть соединение Server-Send Events в Flask?

Ниже приведен ответ с использованием node.js.

Как закрыть «Server-Sent Events» -соединение на сервере?

Однако, как сделать то же самое в python Flask?

  • Как перенаправить, когда сервер-отправленное событие завершено в Flask на стороне сервера?
  • One Solution collect form web for “Как закрыть соединение Server-Send Events в Flask?”

    Ну, это зависит от архитектуры вашего приложения.

    Позвольте мне показать вам пример (см. Этот код на странице https://github.com/jkbr/chat/blob/master/app.py ):

    def event_stream(): pubsub = red.pubsub() pubsub.subscribe('chat') for message in pubsub.listen(): print message yield 'data: %s\n\n' % message['data'] @app.route('/stream') def stream(): return flask.Response(event_stream(), mimetype="text/event-stream") 

    Flask запрашивает новое сообщение Redis (операция блокировки) неуклонно, но когда Flask видит, что потоковая передача завершается ( StopIteration , если вы не новичок в Python), она возвращается.

     def event_stream(): pubsub = red.pubsub() pubsub.subscribe('chat') for message in pubsub.listen(): if i_should_close_the_connection: break yield 'data: %s\n\n' % message['data'] @app.route('/stream') def stream(): return flask.Response(event_stream(), mimetype="text/event-stream") 
    Python - лучший язык программирования в мире.