From f77c01033012aeed73680c7385e86f174647e91c Mon Sep 17 00:00:00 2001 From: win Date: Mon, 23 Mar 2026 10:56:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20MySQL=20=E8=BF=9E=E6=8E=A5=E6=B1=A0?= =?UTF-8?q?=E6=96=AD=E5=BC=80=E6=97=B6=E4=B8=BB=E5=8A=A8=E9=87=8D=E5=BB=BA?= =?UTF-8?q?=E8=80=8C=E9=9D=9E=E8=B7=B3=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _ensure_db_connection: SELECT 1 探活,失败则 close + reinit 重建连接池 --- app/core/scheduler.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/app/core/scheduler.py b/app/core/scheduler.py index 524c7b1..57d74e2 100644 --- a/app/core/scheduler.py +++ b/app/core/scheduler.py @@ -179,18 +179,29 @@ async def _get_active_proxy() -> "str | None": return None -async def company_cleaning_job(): - """每5分钟执行:自动清洗待处理公司数据""" +async def _ensure_db_connection(): + """确保 MySQL 连接池可用,不可用时重建""" from tortoise import Tortoise - from app.services.company_cleaner import company_cleaner + from app.settings import TORTOISE_ORM - # 检查连接池是否可用,不可用则跳过本轮 try: conn = Tortoise.get_connection("default") await conn.execute_query("SELECT 1") except Exception as e: - logger.warning(f"company_cleaning_job skipped: DB connection unavailable: {e}") - return + logger.warning(f"MySQL 连接池不可用({e}),尝试重建...") + try: + await Tortoise.close_connections() + except Exception: + pass + await Tortoise.init(config=TORTOISE_ORM) + logger.info("MySQL 连接池重建成功") + + +async def company_cleaning_job(): + """每5分钟执行:自动清洗待处理公司数据""" + from app.services.company_cleaner import company_cleaner + + await _ensure_db_connection() task_id = str(uuid.uuid4()) started_at = datetime.now()