hiroi-sora / Umi-OCR

OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。
MIT License
27.27k stars 2.74k forks source link

docker 作为 server 提供 api 接口长时间运行后,api 接口服务失效 #642

Open BigGan opened 2 months ago

BigGan commented 2 months ago

Issues

Umi-OCR version 程序版本

2.1.3

Windows version 系统版本

linux docker

OCR plugins Used 使用的OCR插件

No response

Reproduction steps 复现步骤

运行 docker 提供 api 服务,运行大概 3、4 天后,识别 pdf 状态一直显示 waiting!!! 能返回 task id,然后死循环获取 status,一直都是 waiting!

Problem screenshots or related files (optional) 问题截图或相关文件(可选)

No response

hiroi-sora commented 2 months ago

一直显示 waiting ,原因是某一次任务未完成,导致后续的任务无法进行。

目前PDF任务的逻辑是串行排队执行,即允许并发提交任务,但必须等上一份文件识别完成后才能处理下一份文件。

也许你某一次任务提交了非常大的一个文件,此文件仍未识别完成,堵塞了后续的文件。


PDF任务有个超时时间,识别耗时超过这个时间的任务会被自动丢弃,防止过度占用资源。默认是24小时,你可以修改此参数:

  1. 进入容器,打开 app/UmiOCR-data/py_src/server/doc_server.py

  2. 前面有一行代码:

    TEMP_FILE_RETENTION_DURATION = 24  # 任务临时文件保留时长,小时

    将它改小一点,如 0.5 。 后面的 TEMP_FILE_CLEANUP_INTERVAL 也可以改小一点,如 0.1 ,以缩短超时判定的间隔。

  3. 重启容器

BigGan commented 2 months ago

一直显示 waiting ,原因是某一次任务未完成,导致后续的任务无法进行。

目前PDF任务的逻辑是串行排队执行,即允许并发提交任务,但必须等上一份文件识别完成后才能处理下一份文件。

也许你某一次任务提交了非常大的一个文件,此文件仍未识别完成,堵塞了后续的文件。

PDF任务有个超时时间,识别耗时超过这个时间的任务会被自动丢弃,防止过度占用资源。默认是24小时,你可以修改此参数:

  1. 进入容器,打开 app/UmiOCR-data/py_src/server/doc_server.py
  2. 前面有一行代码:
TEMP_FILE_RETENTION_DURATION = 24  # 任务临时文件保留时长,小时

将它改小一点,如 0.5 。 后面的 TEMP_FILE_CLEANUP_INTERVAL 也可以改小一点,如 0.1 ,以缩短超时判定的间隔。

  1. 重启容器

检查了下日志记录,发现所有的 task 都处理完毕,而且都成功 clear 了,并没有未完成的任务!

hiroi-sora commented 2 months ago

嗯,我未复现过相同问题,情报不足,暂时无法判断原因。请你再继续观察下,如有相同问题复现再跟我说。

遇到问题时,请关注:

BigGan commented 2 months ago

嗯,我未复现过相同问题,情报不足,暂时无法判断原因。请你再继续观察下,如有相同问题复现再跟我说。

遇到问题时,请关注:

  • 资源占用(CPU、内存)是否正常?
  • 时间、数量是否规律(比如都是4天 or 100次任务发作一次)?
  • 问题发生后,用PDF识别以外的功能(比如图片识别、二维码等)是否正常?

好的,我这边复现要花几天时间等待,之前复现过 3 次,只是 pdf 查询状态有问题,图片识别是正常的 我再测试几次看看

pastors-top commented 3 weeks ago

win11 也有这样的情况出现 不过是在访问data数据的时候 等待时间比较长