0
私は、aiohttpフレームワークを使用してPython 3.5でかなり単純なAPIを構築しました。パフォーマンスを評価する際に、私は応答データの送信がボトルネックと思われることを発見しました。 Chromeデベロッパーツールの[ネットワーク]タブを見ると、このAPIへの呼び出しの平均待機時間(TTFB)は1秒程度です。コンテンツダウンロードコンポーネントは4-5秒のようなものです。 gzipされたコンテンツの範囲は5〜10 MBです。Python aiohttp - 非常に長い時間をかけてgzipped応答を送信する
apiとクライアントは同じサーバーにはありませんが、両方とも同じサンドボックス環境にあります。だから私はネットワークの待ち時間が原因だとは思わない。私は20MBの.zipファイルダウンロードをほぼ即座にApacheから提供しています...
以下は、jsonのようなオブジェクトをクライアントにストリーミングするためのユーティリティ機能です。これを行うより良い方法はありますか?
def gzipped_json_response(obj):
obj_as_bytes = bytes(json.dumps(obj), 'utf-8')
out = gzip.compress(obj_as_bytes, compresslevel=5)
return aiohttp.web.Response(
body=out,
headers={
"Content-Encoding":"gzip"
}
)
どの機能を呼び出すかは、問題の原因となっているコールを確認するのに適しています。 – user2896976