🐛 fix(deploy): celery worker 启动命令移除 --workdir(celery 5.x 已移除)

部署机实测: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 <noreply@anthropic.com>
This commit is contained in:
2026-09-26 20:01:05 +08:00
parent b03431b511
commit 8f8a7ea00a
2 changed files with 5 additions and 2 deletions
+1 -1
View File
@@ -83,7 +83,7 @@ services:
dockerfile: deploy/Dockerfile.moldinsight dockerfile: deploy/Dockerfile.moldinsight
image: gemold-backend:latest image: gemold-backend:latest
container_name: gemold_celery 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: environment:
<<: *base_env <<: *base_env
# Celery/OCC 吞吐调优(OCC_THROUGHPUT 方案 A) # Celery/OCC 吞吐调优(OCC_THROUGHPUT 方案 A)
+4 -1
View File
@@ -104,7 +104,10 @@ services:
dockerfile: deploy/Dockerfile.moldinsight dockerfile: deploy/Dockerfile.moldinsight
image: gemold-backend:latest image: gemold-backend:latest
container_name: gemold_celery 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: environment:
<<: *base_env <<: *base_env
# Celery/OCC 吞吐调优(OCC_THROUGHPUT 方案 A) # Celery/OCC 吞吐调优(OCC_THROUGHPUT 方案 A)