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



我使用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环境变量访问它。

最新更新