Обслуживание больших сгенерированных файлов с помощью Google App Engine?

StackOverflow https://stackoverflow.com/questions/4717568

Вопрос

В настоящее время у меня есть приложение GAE, которое выполняет некоторую автономную обработку (поддерживает данные пользователя) и генерирует файл, который находится где -то в окрестностях 10 - 100 МБ. Я не уверен в лучшем способе обслуживания этого файла пользователю. Два варианта, которые я рассматриваю, являются:

  1. Добавление кода в код обработки в автономном режиме, который «подделывает» его как загрузку формы в хранилище Blob, и пройдя обычный процесс Blobstore, чтобы обслуживать файл.

  2. Наличие автономного кода обработки хранит файл где -то вне GAE и обслуживание его оттуда.

Есть ли гораздо лучший подход, который я упускаю? Я предполагаю, что это функциональность, которая не очень хорошо подходит для GAE. Я думал о хранении в данных данных как DB.Text или Dd.blob, но там я сталкиваюсь с пределом 1 МБ.

Любой вклад будет оценен,

Это было полезно?

Решение

Я думаю, что хранение его в BlobStore через форму для формы-ваш лучший в настоящее время доступный вариант. У нас есть планы по реализации программного написания Blobstore, но это еще не готово.

Другие советы

Мы должны упомянуть, что с некоторое время назад вы можете использовать экспериментальную фети написать файлы.

Тогда вы можете обслуживать файл в качестве загрузки с помощью хорошего Blobstordownownloadhandler

Я бы придерживался первого варианта. Подготовка Blob потребует некоторого дополнительного кодирования, но API Blobstore позволяет обслуживать байтовые диапазоны файла:

http://code.google.com/appengine/docs/python/blobstore/overview.html#serving_a_blob

Вам не нужно будет реализовать служебные куски сами.

Есть какой -то подход, который вы упускаете из виду, хотя я не уверен, намного ли это намного лучше:

Разделите данные на множество кусков 1 МБ и имеют отдельные запросы на передачу кусков.

Это потребует сотрудничества от внешних приложений, чтобы фактически извлечь данные в кусочках; Возможно, вы захотите использовать заголовок HTTP -диапазона для поддержания иллюзии одного файла. Затем есть другой объект, который сохраняет идентификаторы всех отдельных кусков.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top