import grpc from concurrent import futures from app.api.user_service import UserService from app.grpc_generated import user_pb2_grpc from app.core.config import settings from app.db.models import BaseDBModel from app.db.session import engine import asyncio from loguru import logger async def init_db(): # 创建数据库表 async with engine.begin() as conn: await conn.run_sync(BaseDBModel.metadata.create_all) async def serve(): server = grpc.aio.server(futures.ThreadPoolExecutor(max_workers=10)) user_pb2_grpc.add_UserServiceServicer_to_server(UserService(), server) server.add_insecure_port(f"0.0.0.0:{settings.grpc_port}") # 初始化数据库 await init_db() logger.info(f"Starting gRPC server on port {settings.grpc_port}") await server.start() await server.wait_for_termination() if __name__ == "__main__": asyncio.run(serve())