Я использую Flask, и на индексной странице моего веб-приложения есть форма, которая требует, чтобы пользователи загружали видео MP4. Я ожидаю, что мои пользователи будут загружать видео продолжительностью 30 минут, поэтому размеры видео, вероятно, составят сотни мегабайт. Проблема в том, что я собираюсь развернуть это приложение Flask в Google App Engine, и, очевидно, я не могу работать с любым файлом stati c выше 32 МБ. Почему-то, когда я пытаюсь загрузить любое видео в развернутой версии размером более 32 МБ, я получаю ошибку Request Too Large
.
Я вижу, что API BlobStore Python раньше рекомендовалось для работы с действительно большие файлы на сервере в прошлом. Но это было для Python 2.7: https://cloud.google.com/appengine/docs/standard/python/blobstore/
Я использую Python 3.7, и Google теперь рекомендует загружать файлы непосредственно в облачное хранилище, а я нет точно знаю, как это сделать.
Ниже приведен фрагмент, показывающий, как в настоящее время я храню загруженные видео моих пользователей через форму в облачном хранилище. К сожалению, я все еще ограничен в загрузке больших файлов, потому что я получаю сообщения об ошибках. Итак, еще раз, мой вопрос: как я могу заставить своих пользователей выгружать свои файлы напрямую в облачное хранилище таким образом, чтобы не допустить тайм-аут сервера или не выдать ошибку Request Too Large
?
form = SessionForm()
blob_url = ""
if form.validate_on_submit():
f = form.video.data
video_string = f.read()
filename = secure_filename(f.filename)
try:
# The custom function upload_session_video() uploads the file to a Cloud Storage bucket
# It uses the Storage API's upload_from_string() method.
blob_url = upload_session_video(video_string, filename)
except FileNotFoundError as error:
flash(error, 'alert')
# Create the Cloud Storage bucket (same name as the video file)
user_bucket = create_bucket(form.patient_name.data.lower())