129 lines
4.7 KiB
Python
129 lines
4.7 KiB
Python
#!/usr/bin/env python3
|
||
"""直接测试API调用(不使用Celery)"""
|
||
|
||
import requests
|
||
from datetime import datetime
|
||
from api_config import API_CONFIG, RETRY_CONFIG
|
||
import logging
|
||
|
||
logging.basicConfig(level=logging.INFO)
|
||
logger = logging.getLogger(__name__)
|
||
|
||
def call_api_direct(api_key='main_api', custom_payload=None):
|
||
"""直接调用API(复制invoke_call_api_task的核心逻辑)"""
|
||
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||
logger.info(f"呼叫任务API开始执行 - 当前时间: {current_time}")
|
||
|
||
# 获取重试配置
|
||
max_retries = RETRY_CONFIG['max_retries']
|
||
retry_delay = RETRY_CONFIG['retry_delay']
|
||
retry_on_status = RETRY_CONFIG['retry_on_status']
|
||
|
||
# 获取呼叫任务API配置
|
||
call_config = API_CONFIG[api_key]
|
||
call_url = call_config['url']
|
||
method = call_config['method'].upper()
|
||
headers = call_config['headers']
|
||
timeout = call_config['timeout']
|
||
|
||
# 构建呼叫参数
|
||
if custom_payload is None:
|
||
payload = call_config['body']
|
||
else:
|
||
payload = custom_payload
|
||
|
||
try:
|
||
logger.info(f"正在调用呼叫任务API: {method} {call_url}")
|
||
|
||
# 根据method选择请求方式
|
||
if method == 'POST':
|
||
response = requests.post(call_url, headers=headers, json=payload, timeout=timeout)
|
||
elif method == 'GET':
|
||
response = requests.get(call_url, headers=headers, params=payload, timeout=timeout)
|
||
elif method == 'PUT':
|
||
response = requests.put(call_url, headers=headers, json=payload, timeout=timeout)
|
||
elif method == 'DELETE':
|
||
response = requests.delete(call_url, headers=headers, timeout=timeout)
|
||
else:
|
||
raise ValueError(f"不支持的HTTP方法: {method}")
|
||
|
||
# 检查响应状态
|
||
if response.status_code in [200, 201, 204]:
|
||
try:
|
||
result_data = response.json()
|
||
except:
|
||
result_data = {'response': response.text}
|
||
|
||
logger.info(f"呼叫任务API调用成功,响应数据: {result_data}")
|
||
print(f"[{current_time}] ✅ 呼叫任务API成功 - {method} {call_url}")
|
||
return {
|
||
'status': 'success',
|
||
'message': f'呼叫任务API调用成功 ({method})',
|
||
'response': result_data,
|
||
'timestamp': current_time,
|
||
'api_key': api_key
|
||
}
|
||
else:
|
||
logger.error(f"呼叫任务API失败,状态码: {response.status_code}, 响应: {response.text}")
|
||
print(f"[{current_time}] ❌ 呼叫任务API失败 - 状态码: {response.status_code}")
|
||
return {
|
||
'status': 'failed',
|
||
'message': f'呼叫任务API失败,状态码: {response.status_code}',
|
||
'response': response.text,
|
||
'timestamp': current_time,
|
||
'api_key': api_key
|
||
}
|
||
|
||
except requests.exceptions.RequestException as e:
|
||
logger.error(f"呼叫任务API异常: {str(e)}")
|
||
print(f"[{current_time}] ❌ 呼叫任务API异常 - {str(e)}")
|
||
return {
|
||
'status': 'error',
|
||
'message': f'呼叫任务API异常: {str(e)}',
|
||
'timestamp': current_time,
|
||
'api_key': api_key
|
||
}
|
||
|
||
def main():
|
||
"""遍历所有API配置并执行调用"""
|
||
print("🚀 开始遍历API配置列表执行直接调用")
|
||
print("=" * 60)
|
||
|
||
results = []
|
||
|
||
for api_key, config in API_CONFIG.items():
|
||
print(f"\n📞 正在调用API: {api_key}")
|
||
print(f" URL: {config['url']}")
|
||
print(f" 方法: {config['method']}")
|
||
print(f" 超时: {config['timeout']}秒")
|
||
|
||
# 直接调用API函数
|
||
result = call_api_direct(api_key=api_key)
|
||
|
||
status_icon = "✅" if result['status'] == 'success' else "❌"
|
||
print(f" 结果: {status_icon} {result['status']}")
|
||
print(f" 消息: {result['message']}")
|
||
|
||
results.append({
|
||
'api_key': api_key,
|
||
'status': result['status'],
|
||
'message': result['message'],
|
||
'result': result
|
||
})
|
||
|
||
# 汇总结果
|
||
print("\n" + "=" * 60)
|
||
print("📊 任务执行汇总:")
|
||
|
||
success_count = len([r for r in results if r['status'] == 'success'])
|
||
total_count = len(results)
|
||
|
||
for result in results:
|
||
status_icon = "✅" if result['status'] == 'success' else "❌"
|
||
print(f" {status_icon} {result['api_key']}: {result['status']}")
|
||
|
||
print(f"\n🎯 总计: {success_count}/{total_count} 成功")
|
||
print("✨ 任务执行完成")
|
||
|
||
if __name__ == "__main__":
|
||
main() |