fix: MySQL 连接池断开时主动重建而非跳过
_ensure_db_connection: SELECT 1 探活,失败则 close + reinit 重建连接池
This commit is contained in:
parent
b0a755a443
commit
f77c010330
@ -179,18 +179,29 @@ async def _get_active_proxy() -> "str | None":
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
async def company_cleaning_job():
|
async def _ensure_db_connection():
|
||||||
"""每5分钟执行:自动清洗待处理公司数据"""
|
"""确保 MySQL 连接池可用,不可用时重建"""
|
||||||
from tortoise import Tortoise
|
from tortoise import Tortoise
|
||||||
from app.services.company_cleaner import company_cleaner
|
from app.settings import TORTOISE_ORM
|
||||||
|
|
||||||
# 检查连接池是否可用,不可用则跳过本轮
|
|
||||||
try:
|
try:
|
||||||
conn = Tortoise.get_connection("default")
|
conn = Tortoise.get_connection("default")
|
||||||
await conn.execute_query("SELECT 1")
|
await conn.execute_query("SELECT 1")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"company_cleaning_job skipped: DB connection unavailable: {e}")
|
logger.warning(f"MySQL 连接池不可用({e}),尝试重建...")
|
||||||
return
|
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())
|
task_id = str(uuid.uuid4())
|
||||||
started_at = datetime.now()
|
started_at = datetime.now()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user