AnacondaディストリビューションのPython 3.5.5を使用しています。Web サービスを構築するために、ボトル 0.12.13、特に POST リクエストを使用しています。
POST リクエストでは、リクエストのデータはrequest.body
オブジェクトio.BytesIO
です。その値を取得するには、 https://docs.python.org/3/library/io.html#io.BytesIOgetvalue()
に従って使用します。
サーバーは、バイトにデコードされたいくつかのファイルの json 文字列を受け入れます。1 つのファイルのみを送信すると、getvalue()
非常に高速ですが、2 つ以上のファイルを送信すると、信じられないほど遅くなります。例:
start_time = time.time()
postdata = request.body.getvalue() # byte stream
print('getvalue time: {}'.format(time.time() - start_time))
print('len(postdata): {}'.format(len(postdata)))
1 ファイルの出力:
getvalue time: 0.0005793571472167969
len(postdata): 12522
2 つのファイルの出力:
getvalue time: 0.14102387428283691
len(postdata): 21684
BaseRequest.MEMFILE_MAX
2 つのファイルのサイズはデフォルトのボトルの102400 バイトよりもはるかに小さいですが、サイズを 1024000 に変更しましたが、それでも改善はありません。
誰かがその理由/回避策を知っていますか?
前もって感謝します!