尧图精选

Paperless-ngx 消费报 FileNotFoundError 是同一文件被处理两次,怎么调文件稳定延迟

🕒 发布时间:2026/9/14 2:24:25 📁 来源:尧图网络
Paperless-ngx 消费报 FileNotFoundError 是同一文件被处理两次怎么调文件稳定延迟【免费下载链接】paperless-ngxA community-supported supercharged document management system: scan, index and archive all your documents项目地址: https://gitcode.com/GitHub_Trending/pa/paperless-ngxPaperless-ngx 的消费者在消费文档时可能报错日志里出现类似这样的内容文档示例[ERROR] [paperless.consumer] Error while consuming document SCN_0001.pdf: FileNotFoundError: [Errno 2] No such file or directory: /tmp/ocrmypdf.io.yhk3zbv0/origin.pdf Traceback (most recent call last): File /app/paperless/src/paperless_tesseract/parsers.py, line 261, in parse ocrmypdf.ocr(**args) ... FileNotFoundError: [Errno 2] No such file or directory: /tmp/ocrmypdf.io.yhk3zbv0/origin.pdf这条报错出现在 OCR 阶段ocrmypdf 处理临时目录下的origin.pdf时文件已不在官方 Troubleshooting 文档 对它的解释是这通常表示 Paperless 尝试对同一个文件消费了两次。造成重复消费的原因取决于文档放入消费目录的方式例如扫描仪在扫描过程中可能对同一文件做多次写入和修改。解决办法是调大文件稳定延迟file stability delay也就是PAPERLESS_CONSUMER_STABILITY_DELAY配置项。报错含义为什么会消费两次FileNotFoundError指向的是 OCR 处理过程中的临时文件如/tmp/ocrmypdf.io.yhk3zbv0/origin.pdf。如果一个文件在写入完成前就被消费者拿走、而扫描程序随后又对源文件做了修改就会出现同一文件被处理两次后一次处理时文件已经不存在或已变化于是 OCR 打开临时文件失败。这里的关键不是文件丢失而是消费开始时机的判断消费者需要等文件稳定之后再开始消费。调整 PAPERLESS_CONSUMER_STABILITY_DELAYPAPERLESS_CONSUMER_STABILITY_DELAY的定义见 configuration.mdSets the time in seconds that a file must remain unchanged (same size and modification time) before paperless will begin consuming it.即文件的大小和修改时间必须连续保持不变指定秒数Paperless 才会开始消费它。默认值是5.0秒。文档同时建议如果在较慢的网络存储上或遇到某些扫描仪行为导致文件还没写完就被消费的问题时应增大这个值。配置写在哪里配置位置取决于运行方式见 configuration.mdDocker 部署不使用paperless.conf需要把选项写到docker-compose.env文件里。仓库提供了 docker/compose/docker-compose.env 作为模板在其中的 compose 环境配置里加入PAPERLESS_CONSUMER_STABILITY_DELAY10非 Docker 部署Paperless 按以下顺序查找配置文件使用第一个找到的环境变量PAPERLESS_CONFIGURATION_PATH指定的路径/path/to/paperless/paperless.conf/etc/paperless.conf/usr/local/etc/paperless.conf在找到的配置文件中加入同一行PAPERLESS_CONSUMER_STABILITY_DELAY10。仓库根目录的 paperless.conf.example 给出了非 Docker 部署的配置样例其中列有PAPERLESS_CONSUMER_POLLING_INTERVAL、PAPERLESS_CONSUMER_RECURSIVE等消费者选项PAPERLESS_CONSUMER_STABILITY_DELAY按同样方式添加。上面的10只是示例数值。文档没有给出固定推荐值只说明该参数单位是秒、默认5.0需要调大到你的扫描仪/存储环境下文件能保持稳定的程度由你根据实际写入耗时自行确定。说明v3 版消费者统一了延迟相关的设置——旧版的CONSUMER_INOTIFY_DELAY合并为CONSUMER_STABILITY_DELAYCONSUMER_POLLING_DELAY和CONSUMER_POLLING_RETRY_COUNT已移除见 migration-v3.md。如果你在旧文档里看到这些参数对应到现在的就是PAPERLESS_CONSUMER_STABILITY_DELAY。验证是否生效文档没有给出针对这个调整专门的成功日志验证方式是观察消费结果本身修改配置后按你的部署方式重启相关服务Docker Compose 环境即重启容器让新的PAPERLESS_CONSUMER_STABILITY_DELAY生效。重新投放之前会触发该错误的文档例如同一台扫描仪再扫一次检查 Paperless 日志不再出现Error while consuming ... FileNotFoundError的记录且文档正常出现在系统中。如果仍有失败任务可以去 admin 界面查看 failed tasks——按 troubleshooting.md 的说法失败任务会包含错误信息可以据此确认报错是否仍然存在、是同一文件还是新的文件。限制与相关边界该参数只影响何时开始消费不改变消费逻辑本身如果调大延迟后仍报同样的错说明重复处理的原因可能不在文件尚未写稳定应检查文件是如何进入消费目录的。消费者能否发现新文件由PAPERLESS_CONSUMER_POLLING_INTERVAL控制默认0表示使用原生文件系统通知网络文件系统如 NFS、SMB/CIFS 上原生通知可能不可靠应设为正整数轮询间隔。这与稳定延迟是两个独立设置不要混淆。如果日志里是Creating PaperlessTask failed: db locked之类的 SQLite 并发问题则属于另一类故障多 worker 同时访问数据库处理方式见 troubleshooting.md 对应章节与稳定延迟无关。【免费下载链接】paperless-ngxA community-supported supercharged document management system: scan, index and archive all your documents项目地址: https://gitcode.com/GitHub_Trending/pa/paperless-ngx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →