Pickle файл чист после перезапуска программы - PullRequest
0 голосов
/ 16 сентября 2018

Я использую Heroku. Когда я сохраняю файл с pickle, все работает нормально, но после перезапуска программы файл становится чистым. Я использую эти два метода

@staticmethod
def save_obj(obj, name):
    with open(f'plugins/utils/obj/{name}.pkl', 'wb') as f:
        pickle.dump(obj, f)

@staticmethod
def load_obj(name):
    with open(f'plugins/utils/obj/{name}.pkl', 'rb') as f:
        return pickle.load(f)

следующим образом

if cmd[1] == 'b':  # add in dict
    bought = Utils.load_obj('bought')
    print(bought)
    bought[msg.user_id] = {'RU': {}}
    print(bought)
    Utils.save_obj(bought, 'bought')
elif cmd[1] == 'i':  # create empty dict
    Utils.save_obj({}, 'bought')
elif cmd[1] == 's':  # print all from dict
    print(Utils.load_obj('bought'))

1 Ответ

0 голосов
/ 17 сентября 2018

Файловая система Heroku эфемерна . Любые изменения, которые вы вносите в него, теряются при перезапуске dyno, что происходит часто (хотя бы раз в день). Кроме того, динамометры могут быть перезапущены вручную, что вы, похоже, делаете здесь.

Heroku рекомендует хранить загрузки на чем-то вроде Amazon S3 , но в зависимости от того, что вы сохраняете, база данных клиент-сервер может быть лучшим решением. Heroku поддерживает множество и должен предоставить вам базу данных PostgreSQL из коробки. Вы можете получить к нему доступ через переменную окружения DATABASE_URL .

...