77 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
| #!/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.doppler_config 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()
 |