Записать контент в файл в heroku python

У меня есть приложение heroku, развернутое с Flask, Python. В моем сценарии я сохраняю некоторую переменную data в файл params.txt, Тем не менее, когда я делаю heroku run ls Я не вижу ни одного из моих сохраненных файлов (сохраненные файлы здесь относятся к файлам, которые я создал в scirpt, т.е. params.txt). Я использую следующий метод для записи в файл

with open('params.txt', 'a') as the_file:
  the_file.write(data)

В другой части сценария я сохраняю

xg_reg.save_model('train.model')

Я не могу увидеть этот файл train.model или. Что я делаю неправильно?

Замечания:

Нет ошибок в файле журнала.

- Он работает абсолютно нормально на моей локальной машине, но не на сервере. Нужно ли давать специальные разрешения, чтобы скрипт создавал / изменял файлы на сервере?

- Начальная точка приложения Heroku - app.py находится в каталоге /app (каталог /app является каталогом по умолчанию для Heroku. Все пользовательские сценарии идут в этот каталог), и я делаю heroku run ls и в этом каталоге Может ли быть так, что если мы сделаем open('params.txt, 'a') затем он создает этот файл в каком-то другом каталоге. Если да, то, пожалуйста, ответьте в каком каталоге?

НЕ ДУБЛИРУЙТЕ ПРИМЕЧАНИЕ. Это не повторяющийся вопрос, потому что данные не сбрасываются. Просто так heroku run ls не показывает файлы, сгенерированные сценарием. Однако, если я запускаю другой скрипт, я могу получить доступ к файлам, сгенерированным предыдущим скриптом. Пожалуйста, прочитайте вопрос, который я связал, прежде чем пометить его как дубликат. И я буду обновлять ответ, как я получаю некоторые обновления / комментарии от Heroku.

1 ответ

У Heroku эфемерная файловая система. При каждом запросе новая среда клонируется и уничтожается, поэтому вы не можете найти файлы, созданные вами в другом запросе / экземпляре. Вы должны хранить свой лог-файл на Amazon S3 или где-то еще.

Другие вопросы по тегам