Добрый день !
Я хочу организовать потоковый вывод - делаю это так
1) на основной странице у меня скрипт вида
<script>
var content = document.getElementById('content');
var source = new EventSource('/stream?message=${message}');
source.onmessage = function(event) {
content.innerHTML += event.data + '<br>';
};
</script>
Сам генератор, как Python-программа выглядит так --
def stream(self, message):
# Настраиваем заголовки для потокового вывода
cherrypy.response.headers['Content-Type'] = 'text/event-stream'
cherrypy.response.headers['Cache-Control'] = 'no-cache'
# Генератор для потокового вывода данных
def generate():
for i in range(5):
yield f"data: Processing {message} - step {i+1}\n\n"
time.sleep(1)
yield f"data: Finished processing {message}\n\n"
return generate()
Проблема состоит в том, что после первого вызова stream, он, как положено, выводит 5 сообщений + финальное сообщение, однако, после этого, снова срабатывает функция generate, хотя нового входа в stream не было, вновь печатается 6 сообщений, и так до бесконечности.
Почему это происходит и как это исправить, чтобы исполнение generate происходило только один раз ?