В своем проекте использую базу Sqlite, которую кидаю прямиком на гитхаб и делаю деплой через привязку гитхаб аккаунта к хероку. Так вот, примерно раз в сутки количество людей в базе откатывается на то значение, которое было при последнем коммите. Я правильно понимаю, что раз в сутки хероку перезапускает приложение и все изменения с локальными файлами откатываются к состоянию при последнем деплое?
Если это так, то почему в логах у приложения нет никакой информации о перезапуске (если не ошибаюсь, в консоли пишется про cycling) от слова совсем. Бот как работал, так и работает. С базой я не делаю ничего сверхъестественного, просто записываю туда пользователей, либо вытаскивают оттуда нужные записи.
P.S. Даже на спрашивайте, почему я загружаю базу таким образом, просто так надо.
На heroku нельзя использовать файлы, так как используется виртуальная файловая система, которая минимум раз в сутки перезапускается. Об этом они сразу предупреждают в описании. На heroku предоставляется база даже в случае бесплатного доступа для обучения, правда всего 5Мб вроде в пакете hobby-dev. Остальные варианты за деньги также можно. Если же вам нужно обязательно использовать файл sqlite - то тогда надо искать другой хостинг, heroku не подойдет.
виртуальная файловая система, которая раз в сутки перезапускается
Извиняюсь, а что это значит? Она как бы откатывается до первоначального состояния? Или каждый раз подтягивается с какого-то стороннего файлового хостинга?
big_hasan,
The Heroku filesystem is ephemeral - that means that any changes to the filesystem whilst the dyno is running only last until that dyno is shut down or restarted. Each dyno boots with a clean copy of the filesystem from the most recent deploy.
Сергей Горностаев, да, согласен, наверно правильнее минимум раз в сутки, а может и чаще. Изначально когда я пробовал пользоваться heroku так и было, рестарт ровно раз в сутки, но уже через пару месяцев рестарт пошел чуть ли не ежесекундно на протяжении нескольких минут несколько раз в день.
big_hasan, ваше приложение работает в контейнере, внутри которого все ресурсы виртуальные, контейнер в любой момент может быть остановлен, перезапущен, перекинут на другой сервер, запущен в несколькоих экземплярах. Соответственно, эфемерная файловая система контейнера в любой момент времени может "откатиться" до состояния на момент сборки контейнера, чтобы происходит при деплое приложения.