From 0a369a607b574e44908bede258700f01988eb60b Mon Sep 17 00:00:00 2001 From: CI Bot Date: Thu, 10 Sep 2026 22:28:22 +0800 Subject: [PATCH] =?UTF-8?q?fix(worker):=20=E4=BF=AE=E5=A4=8D=20worker=20?= =?UTF-8?q?=E9=95=9C=E5=83=8F=E6=BC=8F=20COPY=20apps/api/app=20=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E5=AF=BC=E8=87=B4=20lipsync=5Ftts=20task=20=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=AF=BC=E5=85=A5=E3=80=81=E8=BD=AC=E7=A0=81=E9=98=9F?= =?UTF-8?q?=E5=88=97=E4=B8=8D=E6=B6=88=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #1844 在 worker celery_app.conf.imports 新增了 "apps.api.app.tasks.lipsync_tts", 但 worker.Dockerfile 只 COPY 了 config.py 和 core/,没 COPY tasks/ 和 services/, 且 PYTHONPATH 缺少 /app/apps/api(API 容器用 from app.xxx 解析的必需前缀)。 导致 worker 启动时 celery import lipsync_tts 失败,transcode 队列没有正常注册, 素材上传后卡在 processing 状态超时,Staging E2E 的 core-upload 和 core-generation 两个用例持续失败(素材永远到不了 ready)。 修复: 1. 将单独 COPY config.py/core/ 改为 COPY 整个 apps/api/app/ 目录(1.2M), 避免后续新增 task 再次漏 COPY; 2. PYTHONPATH 追加 /app/apps/api,对齐 API 容器配置,让 from app.core.celery_app、 from app.services.* 等导入路径在 worker 中也能解析。 --- infra/docker/worker.Dockerfile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/infra/docker/worker.Dockerfile b/infra/docker/worker.Dockerfile index 9ca769af3..83475b7cd 100755 --- a/infra/docker/worker.Dockerfile +++ b/infra/docker/worker.Dockerfile @@ -20,7 +20,7 @@ WORKDIR /app # 设置 Python 环境变量 ENV PATH="/opt/venv/bin:$PATH" -ENV PYTHONPATH=/app:/app/packages +ENV PYTHONPATH=/app:/app/apps/api:/app/packages ENV PYTHONUNBUFFERED=1 ENV APP_VERSION=$APP_VERSION @@ -28,8 +28,10 @@ ENV APP_VERSION=$APP_VERSION COPY alembic.ini /app/alembic.ini COPY migrations/ /app/migrations/ COPY packages/ /app/packages/ -COPY apps/api/app/config.py /app/apps/api/app/config.py -COPY apps/api/app/core/ /app/apps/api/app/core/ +# PR #1844 起,worker 还需要加载 apps.api.app.tasks.lipsync_tts, +# 该 task 依赖 app.services.* 与 app.core.celery_app(PYTHONPATH=/app/apps/api 下解析)。 +# 为避免后续新增 task 再次漏 COPY,直接把整个 apps/api/app/ 复制进 worker 镜像。 +COPY apps/api/app/ /app/apps/api/app/ # Worker 启动脚本 COPY infra/docker/entrypoint-worker.sh /usr/local/bin/entrypoint-worker.sh -- 2.54.0