获取 Token 池状态信息
(self)
| 388 | return self.token_id_map.get(token) |
| 389 | |
| 390 | def get_pool_status(self) -> Dict: |
| 391 | """获取 Token 池状态信息""" |
| 392 | with self._lock: |
| 393 | available_count = len(self._get_available_user_tokens()) |
| 394 | total_count = len(self.token_statuses) |
| 395 | healthy_count = sum(1 for status in self.token_statuses.values() if status.is_healthy) |
| 396 | |
| 397 | # 统计各类型 Token |
| 398 | user_count = sum(1 for s in self.token_statuses.values() if s.token_type == "user") |
| 399 | guest_count = sum(1 for s in self.token_statuses.values() if s.token_type == "guest") |
| 400 | unknown_count = sum(1 for s in self.token_statuses.values() if s.token_type == "unknown") |
| 401 | |
| 402 | status_info = { |
| 403 | "total_tokens": total_count, |
| 404 | "available_tokens": available_count, |
| 405 | "unavailable_tokens": total_count - available_count, |
| 406 | "healthy_tokens": healthy_count, |
| 407 | "unhealthy_tokens": total_count - healthy_count, |
| 408 | "user_tokens": user_count, |
| 409 | "guest_tokens": guest_count, |
| 410 | "unknown_tokens": unknown_count, |
| 411 | "current_index": self._current_index, |
| 412 | "tokens": [] |
| 413 | } |
| 414 | |
| 415 | for token, status in self.token_statuses.items(): |
| 416 | status_info["tokens"].append({ |
| 417 | "token": f"{token[:10]}...{token[-10:]}", |
| 418 | "token_id": status.token_id, |
| 419 | "token_type": status.token_type, |
| 420 | "is_available": status.is_available, |
| 421 | "failure_count": status.failure_count, |
| 422 | "success_count": status.successful_requests, |
| 423 | "success_rate": f"{status.success_rate:.2%}", |
| 424 | "total_requests": status.total_requests, |
| 425 | "is_healthy": status.is_healthy, |
| 426 | "last_failure_time": status.last_failure_time, |
| 427 | "last_success_time": status.last_success_time |
| 428 | }) |
| 429 | |
| 430 | return status_info |
| 431 | |
| 432 | def update_token_type(self, token: str, token_type: str): |
| 433 | """更新 Token 类型(用于健康检查后更新)""" |
no test coverage detected