Сервер не может загрузить большие файлы с Gunicorn
Я сделал небольшой сервер с флягой для загрузки файлов (а затем что-то делал с ними). Загрузка завершена и HTML-форма, которая отправляет файл:
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit">
</form>
На стороне сервера я делаю следующее:
@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, но не мог найти, как это сделать.
Я также думал использовать поток, а затем записывать куски, но опять же, я не мог найти, как получить доступ к потоку с помощью фляги.
Спасибо за вашу помощь
1 ответ
Это может быть связано с проблемой тайм-аута. По умолчанию gunicorn будет зависать, если процесс занимает более 30 секунд. Время загрузки большого файла может легко превысить эту сумму. Возможно, вы захотите указать пользовательское значение времени ожидания при запуске gunicorn. Например, если вы хотите установить тайм-аут на 300 секунд: exec gunicorn [app]:[app] --timeout 300
Источник: установка тайм-аута Gunicorn