【发布时间】:2009-05-22 10:15:13
【问题描述】:
我有一个 python cgi 脚本,它接收通过 http 帖子上传的文件。文件可能很大(300+ Mb)。问题是,cgi.FieldStorage() 获取文件的速度非常慢(一个 300Mb 的文件需要 6 分钟才能“接收”)。通过读取标准输入来做同样的事情大约需要 15 秒。后者的问题是,如果发布了多个字段,我将不得不自己解析数据。
FieldStorage() 有更快的替代方法吗?
【问题讨论】:
我有一个 python cgi 脚本,它接收通过 http 帖子上传的文件。文件可能很大(300+ Mb)。问题是,cgi.FieldStorage() 获取文件的速度非常慢(一个 300Mb 的文件需要 6 分钟才能“接收”)。通过读取标准输入来做同样的事情大约需要 15 秒。后者的问题是,如果发布了多个字段,我将不得不自己解析数据。
FieldStorage() 有更快的替代方法吗?
【问题讨论】:
“[I] 必须自己解析数据”
为什么? CGI 有一个 parser 你可以显式调用。
读取上传的流并将其保存在本地磁盘文件中。
为了获得极快的速度,请使用 StringIO 内存文件。请注意上传将占用的内存量。
使用cgi.parse(mylocalfile)。
【讨论】:
cgi.parse_multipart 和 cgi.FieldStorage,虽然 parse_multipart 更糟!您还有其他解决方案吗?