我正在使用Anaconda发行版的Python 3.5.5。 要构建一个Web服务,我使用的是瓶子0.12.13,特别是POST请求。
在POST请求中,请求的数据位于request.body
,这是一个io.BytesIO
对象。为了获得它的价值,我根据https://docs.python.org/3/library/io.html#io.BytesIO使用getvalue()
。
服务器接受一个解码为字节的少量文件的json字符串。当我只发送一个文件时,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
即使2个文件的大小比102400字节的默认瓶子BaseRequest.MEMFILE_MAX
小得多,我也将其调整为1024000,但仍然没有改进。
有谁知道它的原因/解决方法?
提前致谢!