1

Я пытаюсь отправить большие файлы (50 МБ-2 ГБ), которые я сохранил в S3, используя filepicker.io в Google App Engine Blobstore (на Python). Я бы хотел, чтобы это произошло без прохождения формы в клиентском браузере, поскольку она побеждает требования к проекту (и часто зависает с очень большими файлами).Отправить большие файлы в GAE Blobstore через API (из S3)

Я попробовал несколько решений, в том числе:

  • пытается load the file into GAE with urlfetch (но GAE has a 32MB limit для запросов/ответов)
  • построения нескольких частей формы в питона с и отправки его на blobstore.create_upload_url() (не может передать файл с помощью URL, и не может загрузить его в сценарии из-за предела 32MB)
  • использованием boto to read the file straight into the blobstore (время соединения, и журналы показывают encountered HTTPException exception от Бото, запускающего CancelledError: The API call logservice.Flush() was explicitly cancelled. из GAE, что происходит сбой процесса.

Я изо всех сил пытаюсь найти рабочее решение. Любые подсказки о том, как я могу выполнить эту передачу, или как передать файл из s3 в виде вложения формы, не загружая его сначала на python (т. Е. Просто указывая его URL-адрес), будут очень оценены.

+0

использовать http-библиотеки, а не полный ответ, но проверить его – 2013-04-12 12:04:35

+0

@peterretief вы имеете в виду что-то вроде [запросов python] (http://www.python-requests.org/)? – ergelo

+0

Я разместил вопрос, связанный с этим предложением [здесь] (http://stackoverflow.com/questions/15973204/using-python-requests-to-bridge-a-file-without-loading-into-memory) – ergelo

ответ

1

Устройство BlobstoreUploadHandler не ограничено пределом 32 МБ: https://developers.google.com/appengine/docs/python/tools/webapp/blobstorehandlers. Однако я не уверен, как это может вписаться в ваше приложение. Если вы можете отправить файл в конечную точку, обработанную блоком BlobstoreUploadHandler, то вам должно быть хорошо идти.

+0

спасибо Robert , У меня уже есть BlobstoreUploadHandler. Моя проблема заключается в том, как отправить ему очень большой файл, который я сохранил на S3. Я не могу найти способ подключить его к запросу POST, не загружая его сначала в GAE (который пересечет предел 32 МБ). Надеюсь, это имеет смысл. – ergelo

+0

Есть те процессоры, которые не имеют каких-либо ограничений. Вы изучали их? Это интересная проблема. Я полагаю, вы не можете просто оставить файлы в S3. Если вы разрешаете пользователю взаимодействовать с приложением через браузер, вы можете использовать файл html5 api: http://www.html5rocks.com/en/tutorials/file/dndfiles/#toc-slicing-files для загрузки файла в браузере (что происходит, когда вы загружаете 2GB-файл, хотя). В противном случае вам нужно будет запустить процесс за пределами механизма приложения, чтобы сделать все это. –

Смежные вопросы