問題タブ [httpx]

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 投票する
0 に答える
187 参照

python - Python リクエスト/httpx 応答とガベージ コレクション

私はもともとこれを httpx を使用して見つけましたが、よりよく知られているリクエストにも適用されるため、例では後者を使用します。

ファイルを読み取ることによってちょうど間に合うようにバイトチャンクを作成するジェネレーターからデータが来ている場合、複数の要求を並行して行っています。カウンター/ロックを設定して同時リクエストの数を制限し、メモリに大量のデータが蓄積されないようにしました。完了したらヘッダーからいくつかのデータを取得する必要があるため、応答はリストに蓄積されます。

これは期待どおりには機能せず、リクエストが実行されるにつれてメモリ使用量が増加し続けているように見えました。これは、リクエストがリクエスト本文への参照を保持しているためであることがわかりました。これにより、参照カウントが 0 に達するのを防ぎ、データがガベージ コレクションされません。

最小限の再現可能な例:

httpx の場合、参照は に保存されhttpx.Response.request.stream._bodyます。

応答を蓄積する前に要求への参照を削除することで問題を解決しましたが、これは予期されることですか? 追跡するのは非常に困難で、私が経験していたような意図しないメモリ リークが多く発生するように思えます。

0 投票する
0 に答える
16 参照

remote-server - httpx でリモートアドレスを取得するには?

requestsRemote Addressresponse.raw._original_response.fp.raw._sock.getpeername()[0]を取得していましたが、httpx では機能しないため、httpx で Remote Address を取得するにはどうすればよいですか?

スクリーンショット: [ここに画像の説明を入力][1] [1]: https://i.stack.imgur.com/6lXS6.png

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

python - Python asyncio corurrent send network requestを使用する場合、コルーチンが新しいリクエストを送信するのではなく、最初にレスポンスを処理し続けることを優先させるにはどうすればよいですか?

API を 1000 回要求する (ネットワーク要求を送信して応答を処理する) 場合、最初に 1000 個の要求をすべて送信した後に応答の処理を開始し、次に応答を処理します。

asyncio が完了したら、await 位置コードを返すように指示できますか?

結果

期待される結果:</h3>