我正在编写一个打印系统,它在 CUPS 之上放置了一个简化的界面。用户将作业放入一个队列中,系统以各种方式处理它们(统计信息、页面配额等),然后为用户提供一个 Web 界面以将作业分派到多台打印机之一。
由于可能有多个用户信息亭、一个管理站等,我需要将作业元数据存储在可以处理并发访问的东西中。(你能称数据结构为“可重入”吗?)我能想象的几个选项是
- 一个 MySQL 数据库:非常过分,但肯定是稳定和受支持的
- 元数据文件,手动处理并发访问:完全适合我的需求,但是我必须重新实现 MySQL 原子性的一个子集,而且可能做得很差
- 使用提供的线程安全 cupsipp.h API 写入 CUPS 控制文件
最后一个选项听起来最有吸引力,但有一个问题:我是用 Python 编写的,pycups 和 pkipplib 似乎都没有办法修改控制文件。
编辑:我应该澄清 pkipplib 可以生成新的 IPP 请求,但没有提供任何修改现有控制文件的方法。也就是说,我必须通过将它们作为新工作提交来进行更新。
有人有更好的主意吗?建议将不胜感激。