Python调用Flask API超时无响应问题求助
问题分析与解决方案
核心问题点
- GET请求参数传递错误:你在
requests.get中使用data=json.dumps(data)传递参数,这不符合GET请求规范——GET请求的参数应通过URL查询字符串传递,而非请求体。Postman发送GET请求时会自动将参数附加到URL后,而你的Python代码把JSON放在请求体里,后端Flask可能无法正确解析参数,导致请求流程异常阻塞。 - 响应状态码判断逻辑反向:代码中
if response.status_code!=200: return "Success"完全颠倒逻辑,200才是HTTP请求成功的标准状态码,这样的判断会导致错误的结果返回。 - Session使用错误:之前尝试
requests.Session时仍报bad request,大概率是因为Session的headers设置重复或参数传递方式仍有问题。
修正后的代码
import requests import logging logger = logging.getLogger(__name__) headers = {"Content-Type": "application/json"} def download(current_process_date): try: process_date = current_process_date data = {"date": str(process_date)} # GET请求使用params传递参数,与Postman请求方式一致 response = requests.get( url="<your-api-url>", headers=headers, params=data, verify=False, timeout=3600 # 设置1小时超时,覆盖Postman的8分钟响应时长 ) print(f"响应内容: {response.text}, 状态码: {response.status_code}") response_json = response.json() print(f"响应JSON: {response_json}") logger.info(f"API响应: {response}") logging.info(f'API处理状态: {response_json}') # 修正状态码判断逻辑 if response.status_code == 200: return "Success" else: return "Failed" except Exception as e: error_msg = str(e) print(error_msg) logger.error(f"发生异常: {error_msg}") return "Failed" # 异常时返回失败状态
额外说明
- 如果后端确实需要通过请求体接收JSON(不推荐GET请求这么做),需将请求方法改为
POST,保持data=json.dumps(data)的传递方式,同时后端Flask要配置为接收POST请求的JSON体。 - 检查后端Flask的路由配置,确认它是用
request.args.get('date')获取查询参数,还是request.get_json()获取请求体,这直接决定前端参数的传递方式。
内容的提问来源于stack exchange,提问作者gow_r
相关产品推荐
相关产品推荐

