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

调用Azure云REST API出现upstream request timeout问题求助

问题与解决方案

问题详情

调用部署在Azure云平台的REST API时,反复出现「upstream request timeout」错误。使用的Iris数据集约30万行,尝试减少数据量后问题仍未解决。运行以下代码,预期实现数据上传并输出{},但未达成预期:

import requests
import time
import json

with open("Iris.csv") as f:
line = f.readline()
headers = line.strip().split(",")
features = []
for l in f.readlines():
features.append(list(map(lambda x: float(x), l.strip().split(",")[1:-1])))
models = ["onnx","pmml","pfa"]

for _ in range(600):
data1 = requests.post("https://axscdfd/score", json={
        "models": models,
        "x": features,
         }, headers={"Authorization": "Bearer abcdefght"}, timeout=(100,100))
print(data1.content)
time.sleep(2)

解决建议

1. 拆分请求数据,分批发送

当前代码一次性将30万行特征全部塞进单请求,哪怕减少数据量,单次请求体积仍可能超出后端处理能力。改成分批发送,降低单请求负载:

import requests
import time
import json

# 读取数据集
with open("Iris.csv") as f:
    line = f.readline()
    headers = line.strip().split(",")
    features = []
    for l in f.readlines():
        features.append(list(map(lambda x: float(x), l.strip().split(",")[1:-1])))
models = ["onnx","pmml","pfa"]

# 分批处理,每批1000条(可根据后端性能调整)
batch_size = 1000
total_batches = len(features) // batch_size + (1 if len(features) % batch_size != 0 else 0)

for batch_idx in range(total_batches):
    start = batch_idx * batch_size
    end = start + batch_size
    batch_features = features[start:end]
    
    try:
        response = requests.post(
            "https://axscdfd/score",
            json={"models": models, "x": batch_features},
            headers={"Authorization": "Bearer abcdefght"},
            timeout=(120, 120)  # 适当延长超时时间
        )
        print(f"批次 {batch_idx+1}/{total_batches} 响应: {response.content}")
        
        # 捕获HTTP错误状态码
        if response.status_code >= 400:
            print(f"批次 {batch_idx+1} 错误: {response.text}")
    except requests.exceptions.Timeout:
        print(f"批次 {batch_idx+1} 超时,需检查后端处理能力或调整批次大小")
    
    time.sleep(2)

2. 调整Azure API端点的超时配置

  • Azure ML实时端点: 在Azure门户的端点配置中,找到request_timeout参数,默认是30秒,可调整至120秒(需匹配代码中的超时设置)
  • Azure App Service托管API: 在App Service的「配置-常规设置」中,修改「请求超时」(最大支持230秒),确保超过单批请求的处理时间

3. 优化后端资源与推理效率

  • 检查后端实例的CPU/内存配置,若资源不足,升级实例规格(比如从B1升级到B2)
  • 若使用模型推理,开启GPU加速(如果后端部署了GPU实例),或优化模型的批量推理逻辑,提升处理速度

4. 排查请求频率与限制

  • 查看Azure门户的API监控日志,确认是否触发了速率限制或并发请求限制
  • 若循环请求频率过高,延长time.sleep的间隔(比如从2秒改为5秒),或联系Azure支持提高限制额度

5. 验证请求合法性

  • 确认Bearer令牌未过期、权限正确
  • 检查请求的JSON格式是否符合API要求(比如特征维度、数据类型是否与模型输入匹配)

内容的提问来源于stack exchange,提问作者deepthi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:17:55