問題タブ [quart]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
580 参照

python - Python Quart/Hypercorn のストリーミング応答により net::ERR_HTTP2_PROTOCOL_ERROR 200 が発生する

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

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

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

nginx.conf の関連する設定:

これを解決する方法がわかりません。

問題の原因がわかりました。Quart、Hypercorn、Nginx とは何の関係もありません。問題は Cloudflare と http2 にあり、WriteTimeout が原因です。この回答を参照してください: net::ERR_HTTP2_PROTOCOL_ERROR とは何ですか?

問題は、Cloudlfare でこれを変更する方法です。

Quart が http2 で動作するように構成されていません。

0 投票する
1 に答える
210 参照

python - 非同期 Python サーバー: 起動時に起動して忘れる

非同期タスクを処理する必要があるサーバーを作成しています。非同期コードでは asyncio に固執したいので、Uvicorn で Quart[-OpenAPI] フレームワークを使用することにしました。

ここで、サーバーの起動時にタスク (master.resume()以下のコード) を実行する必要があります。サーバーが完了するのを待たずに、つまり、起動して忘れます。

このタスクを待つことができないため、asyncio でも可能かどうかはわかりませんが、そうしないとcoroutine X was never awaitedエラーが発生します。この回答でloop.run_until_complete()提案されているように使用すると、タスクが完了するまでサーバーがブロックされます。

これが私が持っているコードのスケルトンです:

これを asyncio/Quart で達成できない場合、適切な方法は何でしょうか?