Files
task-executer/simulate_failure.py
2025-12-09 15:16:37 +08:00

58 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""模拟API失败情况,测试重试机制"""
def modify_config_for_test():
"""临时修改配置以测试重试机制"""
import api_config
# 保存原始配置
original_url = api_config.API_CONFIG['main_api']['url']
# 修改为无效URL以模拟失败
api_config.API_CONFIG['main_api']['url'] = 'https://nonexistent-api.example.com/posts'
print(f"已临时修改API URL为: {api_config.API_CONFIG['main_api']['url']}")
print("现在运行测试任务将触发重试机制")
print("测试完成后会恢复原始配置")
return original_url
def restore_config(original_url):
"""恢复原始配置"""
import api_config
api_config.API_CONFIG['main_api']['url'] = original_url
print(f"已恢复原始API URL: {original_url}")
def test_retry_with_failure():
"""测试失败情况下的重试机制"""
original_url = modify_config_for_test()
try:
from tasks import daily_morning_task
import time
print("\n=== 启动失败重试测试 ===")
result = daily_morning_task.delay()
print(f"任务ID: {result.id}")
# 监控重试过程
for i in range(60): # 等待足够长时间观察重试
try:
status = result.status
if status in ['SUCCESS', 'FAILURE']:
print(f"\n任务最终状态: {status}")
print(f"任务结果: {result.result}")
break
else:
print(f"任务状态: {status}... (重试中)")
time.sleep(2)
except Exception as e:
print(f"检查任务状态时出错: {e}")
time.sleep(2)
finally:
restore_config(original_url)
print("\n配置已恢复,测试完成")
if __name__ == '__main__':
test_retry_with_failure()