From 6127f06632e59db0ef01265092932e810866a047 Mon Sep 17 00:00:00 2001 From: zhangtao <9480807882@qq.com> Date: Tue, 20 May 2025 22:43:42 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=BB=9F=E4=B8=80=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E9=85=8D=E7=BD=AE=E5=B9=B6=E6=B7=BB=E5=8A=A0MySQL?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E9=87=8D=E8=AF=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将docker-compose.yaml中的多个独立网络合并为单一网络`fastapi_vue3_admin_network`,简化网络配置。在`init_app.py`中添加MySQL连接重试逻辑,提高服务启动的稳定性。 --- backend/app/plugin/init_app.py | 24 +++++++++++++++++++----- docker-compose.yaml | 16 +++++----------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/backend/app/plugin/init_app.py b/backend/app/plugin/init_app.py index 679c7a2f..66dc3422 100644 --- a/backend/app/plugin/init_app.py +++ b/backend/app/plugin/init_app.py @@ -44,11 +44,25 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[Any, Any]: """ logger.info(settings.BANNER + '\n' + f'{settings.TITLE} 服务开始启动...') await import_modules_async(modules=settings.EVENT_LIST, desc="全局事件", app=app, status=True) - async with async_session() as session: - await ConfigService().init_config_service(redis=app.state.redis, db=session) - logger.info("初始化系统配置完成...") - await DictDataService().init_dict_service(redis=app.state.redis, db=session) - logger.info('初始化数据字典完成...') + + # 添加MySQL连接重试逻辑 + max_retries = 5 + retry_delay = 3 # 秒 + for attempt in range(max_retries): + try: + async with async_session() as session: + await ConfigService().init_config_service(redis=app.state.redis, db=session) + logger.info("初始化系统配置完成...") + await DictDataService().init_dict_service(redis=app.state.redis, db=session) + logger.info('初始化数据字典完成...') + break + except Exception as e: + if attempt == max_retries - 1: + logger.error(f'连接MySQL失败,已达到最大重试次数({max_retries})') + raise + logger.warning(f'连接MySQL失败,将在{retry_delay}秒后重试... (尝试 {attempt + 1}/{max_retries})') + await asyncio.sleep(retry_delay) + await SchedulerUtil.init_system_scheduler() logger.info(f'{settings.TITLE} 服务成功启动...') diff --git a/docker-compose.yaml b/docker-compose.yaml index 2be09cfc..837cd995 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -16,7 +16,7 @@ services: - ./devops/mysql/conf:/etc/mysql/conf.d - ./devops/mysql/logs:/logs networks: - - mysql_network + - fastapi_vue3_admin_network # redis服务 redis: @@ -31,7 +31,7 @@ services: - ./devops/redis/conf/redis.conf:/etc/redis/redis.conf - ./devops/redis/data:/data networks: - - redis_network + - fastapi_vue3_admin_network command: redis-server /etc/redis/redis.conf # 后端服务 @@ -48,7 +48,7 @@ services: volumes: - ./backend:/home networks: - - backend-network + - fastapi_vue3_admin_network depends_on: - mysql - redis @@ -66,17 +66,11 @@ services: - ./devops/nginx/nginx.conf:/etc/nginx/nginx.conf - ./frontend/dist:/usr/share/nginx/html networks: - - frontend_network + - fastapi_vue3_admin_network depends_on: - backend # 网络 networks: - mysql_network: - driver: bridge - redis_network: - driver: bridge - frontend_network: - driver: bridge - backend-network: + fastapi_vue3_admin_network: driver: bridge