From 8f8a7ea00a5a72524ca2f53c0fc2e7144b2d1ae1 Mon Sep 17 00:00:00 2001 From: chenjw28 <792430652@qq.com> Date: Sat, 26 Sep 2026 20:01:05 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(deploy):=20celery=20worker?= =?UTF-8?q?=20=E5=90=AF=E5=8A=A8=E5=91=BD=E4=BB=A4=E7=A7=BB=E9=99=A4=20--w?= =?UTF-8?q?orkdir=EF=BC=88celery=205.x=20=E5=B7=B2=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 部署机实测:celery worker --workdir=/app/src 报 "No such option '--workdir'"(旧 Dockerfile.celery 用的参数, celery 4.x 兼容,5.x 已删除;项目锁的是新版本)。 修复:compose 的 moldinsight-celery command 改为 cd /app/src && exec celery -A celery_app worker ... 直接切到 src/ 目录启动 worker(celery_app.py 内 include= ["celery_tasks"] 是裸模块名,需在 src/ 下才能解析),不依赖 celery 版本是否支持 --workdir。 Co-Authored-By: Claude Code --- docker-compose.moldinsight.yml | 2 +- docker-compose.yml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docker-compose.moldinsight.yml b/docker-compose.moldinsight.yml index b0460be..7a4cc7d 100644 --- a/docker-compose.moldinsight.yml +++ b/docker-compose.moldinsight.yml @@ -83,7 +83,7 @@ services: dockerfile: deploy/Dockerfile.moldinsight image: gemold-backend:latest container_name: gemold_celery - command: ["sh", "-c", "exec celery -A celery_app worker --workdir=/app/src --concurrency=${CELERY_CONCURRENCY:-2} --max-tasks-per-child=${CELERY_MAX_TASKS_PER_CHILD:-50} --loglevel=info"] + command: ["sh", "-c", "cd /app/src && exec celery -A celery_app worker --concurrency=${CELERY_CONCURRENCY:-2} --max-tasks-per-child=${CELERY_MAX_TASKS_PER_CHILD:-50} --loglevel=info"] environment: <<: *base_env # Celery/OCC 吞吐调优(OCC_THROUGHPUT 方案 A) diff --git a/docker-compose.yml b/docker-compose.yml index 0148c8a..df9cc1a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -104,7 +104,10 @@ services: dockerfile: deploy/Dockerfile.moldinsight image: gemold-backend:latest container_name: gemold_celery - command: ["sh", "-c", "exec celery -A celery_app worker --workdir=/app/src --concurrency=${CELERY_CONCURRENCY:-2} --max-tasks-per-child=${CELERY_MAX_TASKS_PER_CHILD:-50} --loglevel=info"] + # cd /app/src 是必须的:celery_app / celery_tasks 是 src/ 的子模块, + # 而其 import 用的是裸模块名(celery_app.py 内 include=["celery_tasks"]), + # 所以 worker 必须从 src/ 目录启动;不依赖 celery 版本是否支持 --workdir + command: ["sh", "-c", "cd /app/src && exec celery -A celery_app worker --concurrency=${CELERY_CONCURRENCY:-2} --max-tasks-per-child=${CELERY_MAX_TASKS_PER_CHILD:-50} --loglevel=info"] environment: <<: *base_env # Celery/OCC 吞吐调优(OCC_THROUGHPUT 方案 A)