修复拆帧任务进度卡在 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:
@@ -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 =="
|
||||
|
||||
Reference in New Issue
Block a user