修复拆帧任务进度卡在 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:
2026-05-03 17:30:24 +08:00
parent 481ffa5b67
commit 0b4e10209a
4 changed files with 30 additions and 8 deletions

View File

@@ -98,6 +98,27 @@ wait_for_http() {
exit 1
}
wait_for_process() {
local label="$1"
local pidfile="$2"
local logfile="$3"
for _ in $(seq 1 8); do
local pid
pid="$(cat "${pidfile}" 2>/dev/null || true)"
if [[ -n "${pid}" ]] && kill -0 "${pid}" >/dev/null 2>&1; then
echo " ${label} ready"
return
fi
sleep 1
done
echo "${label} did not stay running." >&2
echo "Last log lines from ${logfile}:" >&2
tail -n 80 "${logfile}" >&2 || true
exit 1
}
ensure_conda
echo "[1/6] Checking PostgreSQL..."
@@ -138,12 +159,13 @@ echo "[5/6] Starting backend and worker..."
start_detached "FastAPI" "${PROJECT_DIR}/backend" "${FASTAPI_PID}" "${FASTAPI_LOG}" \
"${CONDA_BIN}" run -n "${CONDA_ENV}" uvicorn main:app --host 0.0.0.0 --port "${BACKEND_PORT}"
start_detached "Celery" "${PROJECT_DIR}/backend" "${CELERY_PID}" "${CELERY_LOG}" \
"${CONDA_BIN}" run -n "${CONDA_ENV}" celery -A celery_app:celery_app worker --loglevel=info --concurrency=1
"${CONDA_BIN}" run -n "${CONDA_ENV}" celery -A celery_app:celery_app worker --loglevel=info --pool=solo --concurrency=1
echo "[6/6] Starting frontend..."
start_detached "Frontend" "${PROJECT_DIR}" "${FRONTEND_PID}" "${FRONTEND_LOG}" npm run dev
wait_for_http "FastAPI" "http://127.0.0.1:${BACKEND_PORT}/health" "${FASTAPI_LOG}"
wait_for_process "Celery" "${CELERY_PID}" "${CELERY_LOG}"
wait_for_http "Frontend" "http://127.0.0.1:${FRONTEND_PORT}" "${FRONTEND_LOG}" HEAD
echo "== Restart complete =="