| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- """
- A2A IM Gateway Server
- 启动 Gateway 服务器,提供 Agent 注册和消息路由
- """
- import asyncio
- import logging
- from fastapi import FastAPI
- from fastapi.middleware.cors import CORSMiddleware
- import uvicorn
- from gateway.core.registry import AgentRegistry
- from gateway.core.router import GatewayRouter
- # 配置日志
- logging.basicConfig(
- level=logging.INFO,
- format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
- )
- logger = logging.getLogger(__name__)
- def create_gateway_app() -> FastAPI:
- """创建 Gateway FastAPI 应用"""
- app = FastAPI(
- title="A2A IM Gateway",
- description="Agent 即时通讯网关",
- version="1.0.0"
- )
- # 添加 CORS 中间件
- app.add_middleware(
- CORSMiddleware,
- allow_origins=["*"],
- allow_credentials=True,
- allow_methods=["*"],
- allow_headers=["*"],
- )
- # 创建 Registry
- registry = AgentRegistry(heartbeat_timeout=60)
- # 创建 Router
- router = GatewayRouter(registry)
- # 注册路由
- app.include_router(router.router)
- # 启动和关闭事件
- @app.on_event("startup")
- async def startup():
- await registry.start()
- logger.info("Gateway started")
- @app.on_event("shutdown")
- async def shutdown():
- await registry.stop()
- logger.info("Gateway stopped")
- # 健康检查
- @app.get("/health")
- async def health():
- return {"status": "ok"}
- return app
- def main():
- """启动 Gateway 服务器"""
- app = create_gateway_app()
- # 启动服务器
- uvicorn.run(
- app,
- host="0.0.0.0",
- port=8000,
- log_level="info"
- )
- if __name__ == "__main__":
- main()
|