我使用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'))
答案 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访问它。