ADK-gateway/backend/app/main.py
2026-08-04 17:20:08 +08:00

62 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""FastAPI 应用入口注册路由、CORS、启动后台任务循环。"""
import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.config import settings
from app.api import admin, agent, cli
from app.middleware import RequestLogMiddleware
from app.scheduler_loop import SchedulerLoop
from app.repository.redis_client import get_redis_pool
logging.basicConfig(
level=getattr(logging, settings.log_level.upper(), logging.INFO),
format="%(asctime)s %(levelname)s [%(name)s] %(message)s",
)
logger = logging.getLogger(__name__)
@asynccontextmanager
async def lifespan(app: FastAPI):
# 启动时会话
redis = await get_redis_pool()
loop = SchedulerLoop(redis)
app.state.redis = redis
app.state.scheduler_loop = loop
await loop.start()
logger.info("Gateway started, host=%s port=%s", settings.host, settings.port)
try:
yield
finally:
await loop.stop()
await redis.aclose()
logger.info("Gateway stopped")
app = FastAPI(
title="A2A Gateway",
description="A2A 智能网关:任务池 / Agent 池 / 规则调度 / 通信中转 / 可视化运维",
version="1.0.0",
lifespan=lifespan,
)
# CORS允许前端开发服务器访问
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.add_middleware(RequestLogMiddleware)
app.include_router(cli.router, prefix="/api/cli", tags=["CLI"])
app.include_router(agent.router, prefix="/api/agent", tags=["Agent"])
app.include_router(admin.router, prefix="/api/admin", tags=["Admin"])
@app.get("/health", tags=["health"])
async def health():
return {"status": "ok"}