Я сделал несколько поисков в Google по этой теме, но не смог ничего найти (кроме подтверждения того, что AppEngine игнорирует вызовы 'resp.setHeader("transfer-encoding", xxxx)'.
Моя проблема в том, что у меня есть серверный процесс, выполнение которого занимает немного времени (в среднем ~ 3 секунды), но который дает результаты в виде непрерывного потока (т.е. первый объект данных готов всего через 10 мс).
В настоящее время сервер буферизует ответ, а затем передает всю партию клиенту для отображения. Хотя это работает, это не блестящий пользовательский опыт, так как пользователь должен дождаться завершения всего процесса, прежде чем он сможет увидеть первые результаты...
Я считаю, что использование фрагментированной передачи решит эту проблему, поскольку я смогу немедленно отправить первый ответ клиенту (и передать последующие данные, как только они станут доступны), что даст гораздо лучшее представление о прогрессе и т. д.
Моя проблема в том, что я не могу понять, как включить передачу по частям.
При поиске в Google групповой передачи и механизма приложения чаще всего появляются сообщения от людей, желающих отключить групповую передачу из blobstore, или сообщения о том, что групповая передача включена по умолчанию. Однако мои тесты на сегодняшний день показали, что, по крайней мере, для моего приложения это не так.
Точно так же в ссылках, отличных от движка приложений, говорится об установке заголовка содержимого «transfer-encoding», но это явно игнорируется в AppEngine (по крайней мере, согласно документам python — на стороне Java ничего не найдено, что утверждает это явно, но это не сработало, когда я тестировал его).
наконец, я уже пробовал сбрасывать объект respose, получать ответный писатель и сбрасывать, получать выходной поток ответа и сбрасывать и т. д. не имело значения.
Итак, мой вопрос: как включить передачу по частям?