我使用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'))
Heroku 的 fileytem 是短暂的。当您的测功机重新启动时,您对其所做的任何更改都会丢失,这种情况经常发生(至少每天一次(。此外,您可以手动重新启动测功机,您似乎正在这样做。
Heroku 建议将上传存储在 Amazon S3 之类的东西上,但根据您要保存的内容,客户端-服务器数据库可能是更好的解决方案。Heroku支持许多,应该为您提供开箱即用的PostgreSQL数据库。您可以通过DATABASE_URL
环境变量访问它。