0

クライアントに応答をストリーミングするQuartアプリがあります。asyncio.sleep を使用して応答の完了を遅らせています。遅延を 59 秒に設定すると、すべて正常に動作します。ストリームは問題なく完了します。時間を 120 秒に増やすと、応答がタイムアウトしたように見えます。これはクライアントが受信したストリームの最初の部分ですが、約 60 秒後にブラウザが Chrome で次のようなエラーをスローします: net::ERR_HTTP2_PROTOCOL_ERROR 200. Firefox は TypeError をスローします。

NginxでHypercornを使用しています。

ハイパーコーンの config.py ファイルには次のように書かれています。

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 で動作するように構成されていません。

4

1 に答える 1