修复拆帧任务进度卡在 0%
- 将 Celery worker 启动方式改为 solo pool,避免 OpenCV/PyTorch/SAM 相关依赖在本机 prefork worker 中段错误崩溃。 - 增强开发重启脚本:启动 Celery 后检查 worker 进程是否持续存活,避免脚本误报服务已启动但任务无人消费。 - 同步一键启动脚本和安装/README 文档中的 Celery 启动命令,统一使用 --pool=solo --concurrency=1。 - 已验证脚本语法、diff 检查、服务重启、健康检查和 Celery inspect ping,确认拆帧任务可从 0% 继续执行到完成。
This commit is contained in:
@@ -334,10 +334,10 @@ nohup uvicorn main:app --host 0.0.0.0 --port 8000 > /tmp/fastapi.log 2>&1 &
|
||||
cd ~/Desktop/Seg_Server/backend
|
||||
source ~/miniconda3/etc/profile.d/conda.sh
|
||||
conda activate seg_server
|
||||
celery -A celery_app:celery_app worker --loglevel=info --concurrency=1
|
||||
celery -A celery_app:celery_app worker --loglevel=info --pool=solo --concurrency=1
|
||||
|
||||
# 或使用后台模式
|
||||
nohup celery -A celery_app:celery_app worker --loglevel=info --concurrency=1 > /tmp/celery.log 2>&1 &
|
||||
nohup celery -A celery_app:celery_app worker --loglevel=info --pool=solo --concurrency=1 > /tmp/celery.log 2>&1 &
|
||||
```
|
||||
|
||||
视频导入只创建项目并把源视频保存到 MinIO,不会自动拆帧;项目库导入面板会用 Axios 上传回调显示上传进度、百分比和字节数。用户在项目库点击“生成帧”后,再选择目标 FPS 并调用 `POST /api/media/parse`。DICOM 批量导入会在前端选择、后端上传、worker 下载和 pydicom 读取四个环节按文件名自然顺序排序,保证 `1.dcm、2.dcm、10.dcm` 这种序列按可见数字顺序转成项目帧;上传阶段同样显示进度条和本次有效 `.dcm` 文件数量,上传完成后项目库会轮询解析任务进度直到完成、失败或取消。项目卡片支持复制项目:`新项目重置` 会复制项目媒体字段和已生成帧序列但不复制标注,`全内容复制` 会额外复制标注和关联 mask 元数据,任务运行历史不复制。项目库和模板库的成功/失败反馈使用非阻塞短提示,会自动消失,不再用浏览器 `alert()` 阻塞后续操作;项目删除、模板删除、用户改密码/删除和演示出厂重置等高风险操作使用站内确认弹窗。该接口只创建 `processing_tasks` 记录并把任务投递给 Celery;真正的 FFmpeg/OpenCV/pydicom 拆帧由 worker 执行。接口支持 `parse_fps`、`max_frames` 和 `target_width`,用于生成后续 SAM 2 视频处理可复用的标准帧序列;视频/DICOM 解析后都按 `frame_%06d.jpg` 连续生成项目帧,帧表会记录 `timestamp_ms` 和 `source_frame_number`,任务完成结果会返回 `frame_sequence` 元数据。worker 每次更新任务状态后会发布到 Redis `seg:progress` 频道,FastAPI 订阅后转发到 `/ws/progress`,前端 Dashboard 可实时更新。Dashboard 的任务进度区展示 queued/running/success/failed/cancelled 最近任务,处理中统计只计算 queued/running;WebSocket 状态由浏览器 `onopen/onclose/onerror` 驱动,客户端会定时发送 `ping` 心跳,服务端返回 `status` 确认连接。Dashboard 也可调用 `/api/tasks/{id}/cancel`、`/api/tasks/{id}/retry` 和 `/api/tasks/{id}` 完成任务取消、重试与失败详情查看。
|
||||
@@ -446,7 +446,7 @@ pip install -r requirements-dev.txt # 安装后端测试
|
||||
pytest tests # 后端接口测试
|
||||
uvicorn main:app --host 0.0.0.0 --port 8000 --reload # 开发模式(热重载)
|
||||
uvicorn main:app --host 0.0.0.0 --port 8000 # 生产模式
|
||||
celery -A celery_app:celery_app worker --loglevel=info --concurrency=1 # 后台任务 worker
|
||||
celery -A celery_app:celery_app worker --loglevel=info --pool=solo --concurrency=1 # 后台任务 worker
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user