标记失败并实时同步数据库统计。
(self, token: str, error: Exception = None, dao=None)
| 361 | self.token_statuses[token].db_synced_successful_requests += 1 |
| 362 | |
| 363 | async def record_token_failure(self, token: str, error: Exception = None, dao=None): |
| 364 | """标记失败并实时同步数据库统计。""" |
| 365 | self.mark_token_failure(token, error) |
| 366 | |
| 367 | token_id = self.get_token_id(token) |
| 368 | if token_id is None: |
| 369 | return |
| 370 | |
| 371 | if dao is None: |
| 372 | from app.services.token_dao import get_token_dao |
| 373 | |
| 374 | dao = get_token_dao() |
| 375 | |
| 376 | try: |
| 377 | await dao.record_failure(token_id) |
| 378 | except Exception as e: |
| 379 | logger.error(f"❌ 同步 Token 失败统计失败: {e}") |
| 380 | return |
| 381 | |
| 382 | with self._lock: |
| 383 | if token in self.token_statuses: |
| 384 | self.token_statuses[token].db_synced_failed_requests += 1 |
| 385 | |
| 386 | def get_token_id(self, token: str) -> Optional[int]: |
| 387 | """获取 Token 的数据库 ID""" |