bottlepy で記述された Python Web アプリケーションがあります。その唯一の目的は、人々が処理される大きなファイルをアップロードできるようにすることです (処理には約 10 ~ 15 分かかります)。
アップロードコードはかなり単純です:
@route('/upload', method='POST')
def upload_file():
uploadfile = request.files.get('fileToUpload')
if not uploadfile:
abort(500, 'No file selected for upload')
name,ext = os.path.splitext(uploadfile.filename)
if ext not in ['.zip','.gz']:
abort(500, 'File extension not allowed')
try:
uploadfile.save('./files')
process_file(uploadfile.filename) #this function is not yet implemented
return "uploaded file '%s' for processing" % uploadfile.filename
except IOError as e:
abort(409, "File already exists.")
uWSGI を使用してこのアプリケーションを展開する予定です (ただし、他のテクノロジが目的に適している場合は、確定していません。
このため、そのような目的での uWSGI の使用に関していくつか質問があります。
- ファイルのアップロードに数分かかる場合、uWSGI はブロックせずに他のクライアントをどのように処理できるでしょうか?
- ユーザーがアップロード後に応答を取得し、処理ステータスを照会できるように、uWSGI の組み込み機能を使用して処理をオフロードする方法はありますか?
助けてくれてありがとう。