Heroku: обслуживание больших динамически генерируемых активов без локальной файловой системы - PullRequest
9 голосов
/ 26 октября 2009

У меня есть вопрос о размещении больших динамически генерируемых активов и Heroku .

Мое приложение будет предлагать массовую загрузку подмножества базовых данных, которое будет состоять из большого файла (> 100 МБ), генерируемого каждые 24 часа. Если бы я работал на сервере, я бы просто записал файл в публичный каталог.

Но, насколько я понимаю, это невозможно с Героку. В каталог / tmp можно записать, но гарантированное время жизни файлов , похоже, определено в виде одного цикла запрос-ответ, а не фонового задания.

Я бы хотел использовать S3 для размещения загружаемого файла. S3 gem поддерживает потоковую загрузку, но только для файлов, которые уже существуют в локальной файловой системе. Похоже, размер контента должен быть известен заранее, что в моем случае будет невозможно.

Так что это похоже на ловушку-22. Я пытаюсь избежать создания гигантской строки в памяти при загрузке в S3, но S3 поддерживает потоковую загрузку только для файлов, которые уже существуют в локальной файловой системе.

Учитывая приложение Rails, в котором я не могу писать в локальную файловую систему, как мне обслуживать большой файл, который генерируется ежедневно, без создания большой строки в памяти?

Ответы [ 2 ]

10 голосов
/ 26 октября 2009

${RAILS_ROOT}/tmp (не / tmp, он находится в каталоге вашего приложения) длится в течение всего процесса. Если вы используете фонового диджея, файлы в TMP будут сохраняться в течение всего этого процесса.

На самом деле, файлы будут работать дольше, поэтому мы говорим, что вы не можете гарантировать доступность, потому что tmp не распределяется между серверами, и каждое задание / процесс может выполняться на другом сервере в зависимости от нагрузки на облако. Вам также необходимо убедиться, что вы удалите свои файлы, когда закончите с ними как часть работы.

- Другой сотрудник Heroku

3 голосов
/ 26 октября 2009

Рич,

Вы пытались записать файл в ./tmp и затем передать файл на S3?

-Блек Мизераны (Героку)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...