У меня есть приложение Quart, с помощью которого я передаю ответ клиенту. Я использую asyncio.sleep, чтобы отложить завершение ответа, если я установил задержку на 59 секунд, все работает нормально. Поток завершается без каких-либо проблем. Если я увеличу время до 120 секунд, ответ появится на тайм-аут. То есть первая часть потока принимается клиентом, но примерно через 60 секунд браузер выдает ошибку в Chrome: net :: ERR_HTTP2_PROTOCOL_ERROR 200. Firefox выдает ошибку типа.
Я использую Hypercorn с Nginx.
в файле config.py для hypercorn:
Shutdown_timeout = 123.0
ssl_handshake_timeout = 123.0
startup_timeout = 123.0
соответствующая настройка в nginx .conf:
location @proxy_to_app {
proxy_read_timout = 600s
}
Я не знаю, как решить эту проблему.
Я выяснил источник проблемы. Это не имеет ничего общего с Quart, Hypercorn или Nginx. Проблема с Cloudflare и http2, это вызвано WriteTimeout. См. Этот ответ: Что такое net :: ERR_HTTP2_PROTOCOL_ERROR?
Тогда возникает вопрос, как это изменить в Cloudlfare.
У меня не настроен Quart работать в http2, это поможет?