Некорректный код ответа SSE
Вопрос в продолжении этого: Парсинг лог файла в динамике и вывод на фронт
Кратко суть: В ходе работы одного из процессов Backend-a генерится лог, который необходимо парсить и, выловив нужную строку, вывести на HTML страницу пользователя. Все происходит в динамике.
По api сервер отвечает вот так:
return StreamingHttpResponse(stream_log(), content_type='text/event-stream')
В консоли браузера получаю код ответа 406: GET 127.0.0.1:8000/api/log-stream 406 (Not Acceptable)
В response вижу {"detail":"Невозможно удовлетворить \"Accept\" заголовок запроса."}
Что пробовал, но не помогло:
- Менять формат ответа yield f"event: {new_line_log}\n\n" и yield f"data: {new_line_log}\n\n"
- Добавлять status на ответ
return StreamingHttpResponse(stream_log(), content_type='text/event-stream’s , status=200)
иstatus=202
Так же прочитал описание SSE, сервер должен ответить Content-Type: text/event-stream
, а я в консоли браузера вижу Content-Type: application/json
. Подозреваю не может ли быть тут ошибка...
Помогите пожалуйста разобраться
Тайна крылась в особенностях обработки запросов DRF. Вот тут описано решение stackoverflow.com/questions/78210488/…. Это решило проблему получения кода 406 и получить нормальный ответ 200, однако это не решило проблему появления строк на HTML странице пользователя.