如何在python中实现一个持久化到磁盘的字典,并且可以从失败中恢复



我有一个使用pyzmq实现的生产者-消费者实现(我从这里举了一个例子:我有一个生产者,它同时为几种不同类型的消费者生产对象,其中每种类型的消费者以不同的方式处理该对象。

此外,我有一个经理/主管,获取有关处理对象(例如sent_from_producer_to_consumer_1, processed_by_consumer_2等)的状态的消息,它存储,对于每个对象,所有这些状态在字典中,它的键是对象逻辑ID,它的值是状态列表。

我想保护我的系统在发生系统故障时不丢失全部信息,方法是将其恢复到最近的状态。

所以我的问题是——我该怎么做?我如何确保管理器的对象状态是磁盘持久化的?

对于一个简单的用例,您可以使用pickle将数据序列化到磁盘,或者如果您的对象非常简单,您甚至可以使用JSON。数据库也适用于这样的任务,并且可伸缩性更好。

Pickle的工作原理如下:

>>> import pickle
>>> d = dict(foo=1, bar=2, baz=3)
>>> with open("/tmp/test.pkl", "wb") as f:
...    pickle.dump(d, f)
...
>>> with open("/tmp/test.pkl", "wb") as f:
...    print(pickle.load(f))
{'bar': 2, 'foo': 1, 'baz': 3}

我找到了一个名为shelve的包/库,它满足了我的愿望。来自文档:

" shelf "是一个持久的、类似字典的对象…

最新更新