+
15
-

python中的queue.Queue()队列如何持久化存储?

python中的queue.Queue()队列如何持久化存储?

即时程序中途退出重启,queue.Queu还能保存未消费的消息队列。

网友回复

+
6
-

我来介绍几种实现 Queue 持久化的方法:

使用 pickle 序列化存储(简单但不推荐用于生产环境):
import queue
import pickle
import atexit

class PersistentQueue:
    def __init__(self, filename="queue.pkl"):
        self.filename = filename
        # 尝试加载已存在的队列数据
        try:
            with open(self.filename, 'rb') as f:
                self.queue = pickle.load(f)
        except FileNotFoundError:
            self.queue = queue.Queue()

        # 注册程序退出时的保存操作
        atexit.register(self.save)

    def put(self, item):
        self.queue.put(item)
        self.save()  # 每次放入数据后保存

    def get(self):
        item = self.queue.get()
        self.save()  # 每次获取数据后保存
        return item

    def save(self):
        with open(self.filename, 'wb') as f:
            pickle.dump(self.queue, f)
使用 SQLite 存储(推荐用于小型应用):
import sqlite3
import queue
import json

class SQLiteQueue:
    def __init__(self, db_path="queue.db"):
        self.conn = sqlite3.connect(db_path)
        self.cursor = self.conn.cursor()
        self.cursor.execute('''
            CREATE ...

点击查看剩余70%

我知道答案,我要回答