我和你的代码架构很相似。我使用了一个单独的 SQLite 数据库,该数据库处理从 A 读取的数据,而进程 B 根据事件并发地写入该数据库。(在 python 3.10.2中使用最新的 sqlite3版本)。进程 B 不断地更新数据库,而进程 A 则从数据库中读取数据以检查数据。我的问题是它在调试模式下工作,而不是在“发布”模式下。
为了解决我的特殊问题,我使用了 提前写日志,这在以前的答案中有所参考。在进程 B (写模式)中创建数据库之后,我添加了以下代码行:
其中 cur 是通过建立连接创建的游标对象。
这将日志设置为 wal 模式,该模式允许对多个读操作进行并发访问(但只能进行一次写操作)。在进程 A 中,我正在读取数据,在连接到同一个数据库之前,我包括: