From b0a755a443db666117752b721eac0944a3dfe546 Mon Sep 17 00:00:00 2001 From: win Date: Mon, 23 Mar 2026 10:55:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20MySQL=20=E8=BF=9E=E6=8E=A5=E6=B1=A0?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BC=98=E5=8C=96=EF=BC=8C=E9=98=B2=E6=AD=A2?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E8=BF=9E=E6=8E=A5=E6=96=AD?= =?UTF-8?q?=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - config.py: 从 DSN 字符串改为 dict 配置,加入 minsize/maxsize/connect_timeout - scheduler.py: company_cleaning_job 执行前先 SELECT 1 检查连接可用性 --- app/core/scheduler.py | 9 +++++++++ app/settings/config.py | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/core/scheduler.py b/app/core/scheduler.py index f4835b3..524c7b1 100644 --- a/app/core/scheduler.py +++ b/app/core/scheduler.py @@ -181,8 +181,17 @@ async def _get_active_proxy() -> "str | None": async def company_cleaning_job(): """每5分钟执行:自动清洗待处理公司数据""" + from tortoise import Tortoise from app.services.company_cleaner import company_cleaner + # 检查连接池是否可用,不可用则跳过本轮 + 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 + task_id = str(uuid.uuid4()) started_at = datetime.now() task_name = "company_cleaning_job" diff --git a/app/settings/config.py b/app/settings/config.py index f812c45..4d987ac 100644 --- a/app/settings/config.py +++ b/app/settings/config.py @@ -49,7 +49,20 @@ class Settings(BaseSettings): ALERT_WINDOW_MINUTES: int = 10 TORTOISE_ORM: dict = { "connections": { - "default": "mysql://root:jobdata123@121.4.126.241:3306/job_data" + "default": { + "engine": "tortoise.backends.mysql", + "credentials": { + "host": "121.4.126.241", + "port": 3306, + "user": "root", + "password": "jobdata123", + "database": "job_data", + "minsize": 1, + "maxsize": 10, + "connect_timeout": 10, + "charset": "utf8mb4", + }, + }, }, "apps": { "models": {