MCPcopy Create free account
hub / github.com/THESIS-AGENT/AIRouter / get_engine

Function get_engine

api_key_manager/models.py:65–94  ·  view source on GitHub ↗

尝试创建数据库引擎并处理连接错误

(retries=5, delay=2)

Source from the content-addressed store, hash-verified

63
64# 创建带有重试机制的数据库引擎
65def get_engine(retries=5, delay=2):
66 """尝试创建数据库引擎并处理连接错误"""
67 for attempt in range(retries):
68 try:
69 logger.info(f"尝试连接到数据库: {DB_HOST}:{DB_PORT}, 尝试 {attempt+1}/{retries}")
70 # 添加connect_args以提高连接可靠性
71 engine = create_engine(
72 DATABASE_URL,
73 pool_pre_ping=True, # 检查连接是否活跃
74 pool_recycle=3600, # 一小时后回收连接
75 pool_size=20, # 增加连接池大小,默认为5
76 max_overflow=30, # 增加溢出连接数,默认为10
77 pool_timeout=60, # 增加等待可用连接的超时时间(秒)
78 connect_args={
79 "connect_timeout": 30 # 连接超时时间(秒)
80 }
81 )
82 # 测试连接
83 connection = engine.connect()
84 connection.close()
85 logger.info("数据库连接成功")
86 return engine
87 except Exception as e:
88 logger.error(f"数据库连接失败: {str(e)}")
89 if attempt < retries - 1:
90 logger.info(f"将在 {delay} 秒后重试...")
91 time.sleep(delay)
92 else:
93 logger.error("所有数据库连接尝试均失败")
94 raise Exception("无法连接到数据库,已达到最大重试次数")
95
96# 初始化数据库
97try:

Callers 1

models.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected