Подтвердить что ты не робот

Как использовать ephemeral файловую систему heroku

Я использую Python/Django на Heroku (Cedar Stack), и у меня есть команда управления, которую мне нужно написать, которая вытащит файл из ведра S3 и обработает его. Я не уверен, что понимаю, как использовать эфемерную файловую систему. Существуют ли только определенные каталоги, которые можно записать? Я нашел другую статью, которая подразумевала, что существуют только определенные папки, которые можно записывать (но, похоже, это не относится к стеку Cedar). Я нашел этот dev article, но он не вдавался в подробности (примечание: я понимаю, что это просто временно. разархивируйте файл и обработайте файл). Могу ли я создать папку в любом месте под корнем приложения? И как я получу это? Похоже, я мог бы просто использовать $HOME. Я немного тестировал, подключившись через

$ heroku run bash

и работает:

$ echo #HOME

возвращает:

/приложение

и работает:

$ mkdir $HOME/tmp

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

Итак... что-то, что мне здесь не хватает? Лучший способ сделать это? Для этого существует переменная среды ОС? Я запустил "env", и я не вижу лучшего.

4b9b3361

Ответ 1

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

Ответ 2

Чтобы действительно понять эфемерную файловую систему, вам нужно понять, что такое dyno. Вы можете больше узнать о о том, как работают динамики. В двух словах, однако, процесс работает на Heroku на виртуальной машине с собственной файловой системой. Эта виртуальная машина может остановиться по ряду причин, взяв вместе с ней файловую систему.

Основная файловая система будет уничтожена, когда приложение будет перезапущено, перенастроено (например, heroku config ...), масштабировано и т.д. Например, если у вас есть два веб-динамика, напишите некоторые файлы в эфемерную файловую систему и нарисуйте до трех динамиков, эти файлы будут уничтожены, потому что ваше приложение работает на новых динамиках.

В общем, эфемерная файловая система работает так же, как любая файловая система. У каталогов, на которые у вас есть разрешение на запись, например $HOME и /tmp, вы можете писать файлы. Любые файлы, требующие постоянства, должны быть записаны на S3 или в аналогичный прочный магазин. S3 является предпочтительным, поскольку Heroku работает на AWS, а S3 предлагает некоторые преимущества в производительности. Любые файлы, которые можно воссоздать по желанию, можно сохранить в хранилище dyno ephemeral.