0

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_MAX2 つのファイルのサイズはデフォルトのボトルの102400 バイトよりもはるかに小さいですが、サイズを 1024000 に変更しましたが、それでも改善はありません。

誰かがその理由/回避策を知っていますか?

前もって感謝します!

4

0 に答える 0