#!/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()