如何在python中实现一个字典,该字典是以可以从故障中恢复的方式持久化到磁盘的?

时间:2014-06-16 07:53:41

标签: python dictionary crash persistence pyzmq

我有一个生产者 - 消费者实现,我正在使用pyzmq实现(我从here获取了示例: 我有一个生产者同时生成几种不同类型的消费者的对象,其中每种类型的消费者以不同的方式处理这个对象。

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

我希望通过将系统恢复到最新状态来保护我的系统免受系统故障导致的完全信息丢失。

所以我的问题是 - 我怎么能这样做?如何确保经理的对象' state是disk persistent?

2 个答案:

答案 0 :(得分:0)

对于一个简单的用例,您可以使用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}

答案 1 :(得分:0)

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

  

“架子”是一个持久的,类似字典的对象......