5

Python 3.3+ (またはその他の組み込みの python HTTP クライアント ライブラリ)を使用http.clientして、チャンクされた HTTP 応答を一度に正確に 1 つの HTTP チャンクで読み取るにはどうすればよいですか?

http.clientHTTP のチャンク転送エンコーディングを使用して応答を書き込むサーバー用に、既存のテスト フィクスチャ (を使用して python で記述) を拡張しています。簡単にするために、クライアントが HTTP チャンクを受信するたびにメッセージを出力できるようにしたいとします。

私のコードは、大きな応答を読み取るためのかなり標準的なパターンに従います。

conn = http.client.HTTPConnection(...)
conn.request(...)
response = conn.getresponse()

resbody = []

while True:
    chunk = response.read(1024)
    if len(chunk):
        resbody.append(chunk)
    else:
        break

conn.close();

ただし、これは、サーバーが 10 バイトのチャンクまたは 10MiB のチャンクを送信しているかどうかに関係なく、1024 バイトのチャンクを読み取ります。

私が探しているのは、次のようなものです。

while True:
    chunk = response.readchunk()
    if len(chunk):
        resbody.append(chunk)
    else
        break

これが で不可能な場合http.client、別の組み込みの http クライアント ライブラリで可能ですか? 組み込みのクライアント lib では不可能な場合、pipインストール可能なモジュールでは可能ですか?

4

2 に答える 2