2017-05-09 26 views
0

ファイルをアップロードするためにフラスコ付きの小さなサーバを作った。私は次の操作を実行し、サーバー側でサーバがgunicornで大きなファイルをアップロードできない

<form action="/upload" method="POST" enctype="multipart/form-data"> 
    <input type="file" name="file"> 
    <input type="submit"> 
</form> 

::アップロードファイルを送信し、HTMLフォームを使用しているそれは、小さなファイルのためではなく、大容量のファイルに正常に動作します

@app.route('/upload', methods=['POST']) 
def upload(): 
    if 'file' in request.files: 
     f = request.files['file'] 
     file_path = os.path.join(app.config['UPLOAD_FOLDER'], werkzeug.secure_filename(f.filename)) 
     f.save(file_path) 

    return 'File is being uploaded' 

、それが失敗します。問題は、もし私が手動でスクリプトを実行すると、gunicorn python main.pyではなかったファイルをアップロードできます。私はgunicornの最大サイズを変更する必要があると思ったが、それを行う方法を見つけることができませんでした。

また、ストリームを使用してチャンクを書き込むと考えられましたが、再びフラスコでストリームにアクセスする方法が見つかりませんでした。

ありがとうございました

+0

「それは小さなファイルのために正常に動作しますが、大きなファイルで、それが失敗した。」たとえば、あなたは300秒にタイムアウトを設定したい場合どのように? – pvg

答えて

-1

タイムアウトの問題が原因である可能性があります。デフォルトでは、プロセスが30秒以上かかるとガンコーンがハングします。大きなファイルをアップロードする時間は、この量を簡単に超えることができます。 gunicornを起動するときにカスタムタイムアウト値を指定することができます。 exec gunicorn [app]:[app] --timeout 300

出典:gunicorn timeout setting

関連する問題