#!/usr/bin/env python3 """ API健康检查模块 用于测试与外部服务的连接,如OpenRouter和RapidAPI。 """ import os import requests import sys from pathlib import Path # 将项目根目录添加到Python路径,以便导入config模块 project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) from config.settings import get_openrouter_key, get_rapidapi_key def test_openrouter_api() -> bool: """ 测试与OpenRouter API的连接和认证。 """ api_key = get_openrouter_key() if not api_key: print("❌ OpenRouter API Key not found.") return False url = "https://openrouter.ai/api/v1/models" headers = {"Authorization": f"Bearer {api_key}"} try: response = requests.get(url, headers=headers, timeout=10) if response.status_code == 200: print("✅ OpenRouter API connection successful.") return True else: print(f"❌ OpenRouter API connection failed. Status: {response.status_code}, Response: {response.text[:100]}") return False except requests.RequestException as e: print(f"❌ OpenRouter API request failed: {e}") return False def test_rapidapi_connection() -> bool: """ 测试与RapidAPI的连接和认证。 这里我们使用一个简单的、免费的API端点进行测试。 """ api_key = get_rapidapi_key() if not api_key: print("❌ RapidAPI Key not found.") return False # 使用一个通用的、通常可用的RapidAPI端点进行测试 url = "https://alpha-vantage.p.rapidapi.com/query" querystring = {"function":"TOP_GAINERS_LOSERS"} headers = { "x-rapidapi-host": "alpha-vantage.p.rapidapi.com", "x-rapidapi-key": api_key } try: response = requests.get(url, headers=headers, params=querystring, timeout=15) # Alpha Vantage的免费套餐可能会返回错误,但只要RapidAPI认证通过,状态码就不是401或403 if response.status_code not in [401, 403]: print(f"✅ RapidAPI connection successful (Status: {response.status_code}).") return True else: print(f"❌ RapidAPI authentication failed. Status: {response.status_code}, Response: {response.text[:100]}") return False except requests.RequestException as e: print(f"❌ RapidAPI request failed: {e}") return False if __name__ == "__main__": print("🩺 Running API Health Checks...") test_openrouter_api() test_rapidapi_connection()