You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Flask API超时无响应问题求助

问题分析与解决方案

核心问题点

  1. GET请求参数传递错误:你在requests.get中使用data=json.dumps(data)传递参数,这不符合GET请求规范——GET请求的参数应通过URL查询字符串传递,而非请求体。Postman发送GET请求时会自动将参数附加到URL后,而你的Python代码把JSON放在请求体里,后端Flask可能无法正确解析参数,导致请求流程异常阻塞。
  2. 响应状态码判断逻辑反向:代码中if response.status_code!=200: return "Success"完全颠倒逻辑,200才是HTTP请求成功的标准状态码,这样的判断会导致错误的结果返回。
  3. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 23:18:22