qwen_agent/start_all.sh
2025-10-22 19:22:36 +08:00

80 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# 启动脚本 - 同时运行FastAPI应用和队列消费者
set -e
echo "========================================="
echo "Starting Qwen Agent Application"
echo "========================================="
# 创建必要的目录
mkdir -p /app/queue_data
# 等待一下确保目录创建完成
sleep 1
echo "Starting FastAPI application with uvicorn..."
# 在后台启动FastAPI应用
uvicorn fastapi_app:app --host 0.0.0.0 --port 8001 &
echo "Starting queue consumer..."
# 在后台启动队列消费者
python task_queue/consumer.py --workers=2 --worker-type=threads &
# 捕获所有后台进程的PID
API_PID=$!
CONSUMER_PID=$!
echo "========================================="
echo "Services started successfully!"
echo "FastAPI PID: $API_PID"
echo "Queue Consumer PID: $CONSUMER_PID"
echo "========================================="
# 定义清理函数
cleanup() {
echo "========================================="
echo "Stopping services..."
echo "========================================="
# 停止FastAPI应用
if [ ! -z "$API_PID" ]; then
echo "Stopping FastAPI application (PID: $API_PID)..."
kill $API_PID 2>/dev/null || true
fi
# 停止队列消费者
if [ ! -z "$CONSUMER_PID" ]; then
echo "Stopping queue consumer (PID: $CONSUMER_PID)..."
kill $CONSUMER_PID 2>/dev/null || true
fi
# 等待进程结束
wait $API_PID 2>/dev/null || true
wait $CONSUMER_PID 2>/dev/null || true
echo "All services stopped."
exit 0
}
# 捕获中断信号
trap cleanup SIGINT SIGTERM
# 持续监控进程状态
while true; do
# 检查FastAPI进程是否还在运行
if ! kill -0 $API_PID 2>/dev/null; then
echo "FastAPI application has stopped unexpectedly"
cleanup
fi
# 检查队列消费者进程是否还在运行
if ! kill -0 $CONSUMER_PID 2>/dev/null; then
echo "Queue consumer has stopped unexpectedly"
cleanup
fi
# 每5秒检查一次
sleep 5
done