#!/usr/bin/env python3 """ 测试任务384的资源是否可访问 根据日志,任务384失败原因是"文件下载失败" """ import requests import sys def test_url(url, name): """测试URL是否可访问""" print(f"\n{'='*80}") print(f"测试 {name}") print(f"{'='*80}") print(f"URL: {url}") try: response = requests.head(url, timeout=10, allow_redirects=True) print(f"状态码: {response.status_code}") if response.status_code == 200: print("✅ 资源可访问") content_type = response.headers.get('Content-Type', 'Unknown') content_length = response.headers.get('Content-Length', 'Unknown') print(f"内容类型: {content_type}") if content_length != 'Unknown': size_mb = int(content_length) / (1024 * 1024) print(f"文件大小: {size_mb:.2f} MB") return True elif response.status_code == 404: print("❌ 资源不存在(404 Not Found)") print("这就是任务失败的原因!") return False elif response.status_code == 403: print("❌ 访问被拒绝(403 Forbidden)") return False else: print(f"❌ 状态码: {response.status_code}") return False except requests.exceptions.Timeout: print("❌ 请求超时") return False except requests.exceptions.ConnectionError as e: print(f"❌ 连接错误: {e}") return False except Exception as e: print(f"❌ 错误: {e}") return False def main(): print("="*80) print("任务384资源可访问性测试") print("="*80) print("\n根据日志,任务384失败原因是'文件下载失败'") print("需要从数据库获取具体的URL进行测试") print("\n请先执行SQL查询获取URL:") print(" mysql -u root -prootx77 fastadmin < xuniYou/检查任务384.sql") print("\n或者直接查询:") print(" SELECT JSON_EXTRACT(payload, '$.image_url'), JSON_EXTRACT(payload, '$.audio_url')") print(" FROM nf_generation_tasks WHERE id = 384;") # 如果提供了URL参数,则测试 if len(sys.argv) > 1: print("\n" + "="*80) print("开始测试提供的URL") print("="*80) for i, url in enumerate(sys.argv[1:], 1): test_url(url, f"URL {i}") print("\n" + "="*80) if __name__ == "__main__": main()