Ответ 1
Вы можете создать файл в каталоге '/tmp', и этот файл будет уничтожен после завершения запроса. Я делаю это на Cedar, и у меня не было никаких проблем.
Я использую Python/Django на Heroku (Cedar Stack), и у меня есть команда управления, которую мне нужно написать, которая вытащит файл из ведра S3 и обработает его. Я не уверен, что понимаю, как использовать эфемерную файловую систему. Существуют ли только определенные каталоги, которые можно записать? Я нашел другую статью, которая подразумевала, что существуют только определенные папки, которые можно записывать (но, похоже, это не относится к стеку Cedar). Я нашел этот dev article, но он не вдавался в подробности (примечание: я понимаю, что это просто временно. разархивируйте файл и обработайте файл). Могу ли я создать папку в любом месте под корнем приложения? И как я получу это? Похоже, я мог бы просто использовать $HOME. Я немного тестировал, подключившись через
$ heroku run bash
и работает:
$ echo #HOME
возвращает:
/приложение
и работает:
$ mkdir $HOME/tmp
создает папку в корне приложения и предоставляет с тем же пользователем и группой, что и другие файлы и папки.
Итак... что-то, что мне здесь не хватает? Лучший способ сделать это? Для этого существует переменная среды ОС? Я запустил "env", и я не вижу лучшего.
Вы можете создать файл в каталоге '/tmp', и этот файл будет уничтожен после завершения запроса. Я делаю это на Cedar, и у меня не было никаких проблем.
Чтобы действительно понять эфемерную файловую систему, вам нужно понять, что такое dyno. Вы можете больше узнать о о том, как работают динамики. В двух словах, однако, процесс работает на Heroku на виртуальной машине с собственной файловой системой. Эта виртуальная машина может остановиться по ряду причин, взяв вместе с ней файловую систему.
Основная файловая система будет уничтожена, когда приложение будет перезапущено, перенастроено (например, heroku config ...
), масштабировано и т.д. Например, если у вас есть два веб-динамика, напишите некоторые файлы в эфемерную файловую систему и нарисуйте до трех динамиков, эти файлы будут уничтожены, потому что ваше приложение работает на новых динамиках.
В общем, эфемерная файловая система работает так же, как любая файловая система. У каталогов, на которые у вас есть разрешение на запись, например $HOME
и /tmp
, вы можете писать файлы. Любые файлы, требующие постоянства, должны быть записаны на S3 или в аналогичный прочный магазин. S3 является предпочтительным, поскольку Heroku работает на AWS, а S3 предлагает некоторые преимущества в производительности. Любые файлы, которые можно воссоздать по желанию, можно сохранить в хранилище dyno ephemeral.