fix: 修复 Celery Worker 任务注册和启动入口 #57

Merged
xiaoxia merged 1 commits from fix/celery-worker into develop 2026-06-27 19:52:47 +08:00
Owner

变更说明

问题根因

Worker Dockerfile 的 CMD 指向旧版空壳 celery_app.py(无 task 自动发现),导致 Worker 启动后注册 0 个任务,所有异步任务全部积压在 Redis 队列中。

修复内容

  1. Worker 启动入口修正worker.Dockerfile CMD 从 celery -A celery_app 改为 celery -A worker_app.celery_app,确保加载正确的 Celery app 实例
  2. 非 root 运行:Dockerfile 添加 celery 用户,Worker 容器不再以 root 身份运行
  3. 任务装饰器补全:为 classification.pygeneration.py 添加缺失的 @celery_app.task 装饰器
  4. generation.py 签名修正:函数签名改为只接收 task_id,从数据库加载其余参数,与 API 端 send_task 调用方式匹配
  5. 导入路径修复voice_extraction.pydedup.py 的错误相对导入和 config/storage 引用已修正
  6. 共享兼容层:新建 packages/shared/config.pypackages/shared/storage.py,提供跨模块统一访问入口
  7. 清理旧文件:删除冗余的 apps/worker/celery_app.py 空壳
  8. 连接可靠性:celery_app.py 添加 broker_connection_retry_on_startup=True

冲突解决

本分支已 rebase 到最新 develop,解决了与 fix/audit-backend-p1p2dedup.pyvoice_extraction.pypackages/shared/config.pypackages/shared/storage.py 上的冲突。

## 变更说明 ### 问题根因 Worker Dockerfile 的 CMD 指向旧版空壳 `celery_app.py`(无 task 自动发现),导致 Worker 启动后注册 0 个任务,所有异步任务全部积压在 Redis 队列中。 ### 修复内容 1. **Worker 启动入口修正**:`worker.Dockerfile` CMD 从 `celery -A celery_app` 改为 `celery -A worker_app.celery_app`,确保加载正确的 Celery app 实例 2. **非 root 运行**:Dockerfile 添加 `celery` 用户,Worker 容器不再以 root 身份运行 3. **任务装饰器补全**:为 `classification.py` 和 `generation.py` 添加缺失的 `@celery_app.task` 装饰器 4. **generation.py 签名修正**:函数签名改为只接收 `task_id`,从数据库加载其余参数,与 API 端 `send_task` 调用方式匹配 5. **导入路径修复**:`voice_extraction.py` 和 `dedup.py` 的错误相对导入和 config/storage 引用已修正 6. **共享兼容层**:新建 `packages/shared/config.py` 和 `packages/shared/storage.py`,提供跨模块统一访问入口 7. **清理旧文件**:删除冗余的 `apps/worker/celery_app.py` 空壳 8. **连接可靠性**:celery_app.py 添加 `broker_connection_retry_on_startup=True` ### 冲突解决 本分支已 rebase 到最新 develop,解决了与 `fix/audit-backend-p1p2` 在 `dedup.py`、`voice_extraction.py`、`packages/shared/config.py`、`packages/shared/storage.py` 上的冲突。
xiaoxia added 1 commit 2026-06-27 19:31:42 +08:00
fix: 修复 Celery Worker 任务注册和导入问题
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
8210806632
1. 修复 Worker 启动入口: celery_app → worker_app.celery_app
   - 旧 celery_app.py 不导入任何任务模块,导致 Worker 注册 0 个任务
   - 删除旧版 apps/worker/celery_app.py,统一使用 worker_app/celery_app.py

2. 为缺少装饰器的任务补充 @celery_app.task:
   - classification.py: classify_asset() 添加装饰器
   - generation.py: generate_video() 添加装饰器,修正签名匹配 API 调用方式

3. 确保 voice_extraction 任务被正确注册:
   - 添加 voice_extraction 到 celery_app imports
   - 修复 voice_extraction.py 中错误的相对导入 (.celery_app → worker_app.celery_app)
   - 修复 dedup.py 中指向已删除模块的导入

4. 修复 worker_app/celery_app.py:
   - 添加 broker_connection_retry_on_startup=True
   - imports 中添加 voice_extraction 和 dedup 模块

5. 修复 Dockerfile:
   - CMD 改为 celery -A worker_app.celery_app
   - 添加非 root 用户 celery 运行 Worker

6. 新建 packages/shared/config.py 和 storage.py 兼容层
   - 为 worker 任务模块提供统一的 config/storage 访问入口
xiaoxia merged commit a357962387 into develop 2026-06-27 19:52:47 +08:00
Sign in to join this conversation.