程序重新启动后,泡菜文件是干净的

时间:2018-09-16 19:41:14

标签: python python-3.x heroku pickle

我使用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 :(得分:1)

Heroku's filesytem is ephemeral。当您的测功机重启happens frequently(每天至少一次)后,您对其所做的任何更改都会丢失。另外,您可以在此处手动执行dynos重启。

Heroku recommends storing uploads on something like Amazon S3,但是根据要保存的客户端服务器数据库,可能是更好的解决方案。 Heroku supports many,并应立即为您提供PostgreSQL database。您可以通过DATABASE_URL environment variable访问它。