次のコードは、複数のファイルをブラウザからホストに順次アップロードします。プロセスを高速化するために、複数のストリームがサーバーに送信されるようにファイルを並行して処理するにはどうすればよいでしょうか? ファイルが同じホストに送信されている場合、これを追求する価値はありますか? ブラウザーは、同じホストへの複数のアップロード ストリームを許可しますか? もしそうなら、これはどのように機能しますか?
ファイルは Python クライアントではなくブラウザーから送信されるため、この例のようにファイルを分割して並列に書き込むことはできないと思います。
#!/usr/bin/python
import cgi, os
import shutil
import cgitb; cgitb.enable() # for troubleshooting
form = cgi.FieldStorage()
print """\
Content-Type: text/html\n
<html><body>
"""
if 'file' in form:
filefield = form['file']
if not isinstance(filefield, list):
filefield = [filefield]
for fileitem in filefield:
if fileitem.filename:
fn = os.path.basename(fileitem.filename)
# save file
with open('/var/www/site/files/' + fn, 'wb') as f:
shutil.copyfileobj(fileitem.file, f)
# line breaks are not occuring between interations
print 'File "' + fn + '" was uploaded successfully<br/>'
message = 'All files uploaded'
else:
message = 'No file was uploaded'
print """
<p>%s</p>
</body></html>
""" % (message)