#!/bin/bash # GAT-LSTM TMP预测模型 API 服务启动脚本 # 使用方法: bash start.sh [dev|prod] set -e # 默认配置 MODE=${1:-prod} SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" LOG_DIR="$SCRIPT_DIR/logs" LOG_FILE="$LOG_DIR/api.log" PID_FILE="$SCRIPT_DIR/api.pid" echo "[启动] 启动GAT-LSTM TMP预测模型 API 服务..." # 创建日志目录 mkdir -p "$LOG_DIR" # 检查是否已经在运行 if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if ps -p $PID > /dev/null 2>&1; then echo "[警告] 服务已经在运行 (PID: $PID)" echo " 如需重启,请先运行: bash stop.sh" exit 1 else echo "[清理] 清理旧的PID文件" rm -f "$PID_FILE" fi fi # 根据模式设置环境变量 if [ "$MODE" = "dev" ]; then echo "[开发模式] 启动开发模式 (详细日志)" export LOG_LEVEL=INFO export DETAILED_LOGS=true LOG_FILE="$LOG_DIR/api_debug.log" else echo "[生产模式] 启动生产模式 (精简日志)" export LOG_LEVEL=INFO export DETAILED_LOGS=false fi # 启动服务 echo "[启动服务] 启动服务..." cd "$SCRIPT_DIR" nohup python api_main.py > "$LOG_FILE" 2>&1 & PID=$! # 保存PID echo $PID > "$PID_FILE" # 等待服务启动 echo "[等待] 等待服务启动..." sleep 3 # 检查服务是否启动成功 if ps -p $PID > /dev/null 2>&1; then echo "[成功] 服务启动成功!" echo " PID: $PID" echo " 工作目录: $SCRIPT_DIR" echo " 日志文件: $LOG_FILE" echo " API文档: http://localhost:7980/docs" echo " 测试接口: http://localhost:7980/api/v1/process_model/test_double_membrance_from_file" echo "" echo "[管理命令]" echo " 查看日志: tail -f $LOG_FILE" echo " 停止服务: bash stop.sh" echo " 查看状态: bash status.sh" else echo "[失败] 服务启动失败!" echo " 请检查日志文件: $LOG_FILE" rm -f "$PID_FILE" exit 1 fi