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

FastAPI通过Python脚本调用响应慢,cURL/Swagger请求速度正常

问题根因

这个现象是localhost域名解析优先级导致的,绝大多数系统的hosts配置会把localhost同时对应IPv6的::1和IPv4的127.0.0.1,Python的HTTP客户端(httpx/requests)默认会优先尝试解析IPv6地址,而你启动的uvicorn只监听IPv4的0.0.0.0,不接收IPv6请求,客户端等待IPv6连接超时(默认超时刚好是2秒)后才会降级尝试IPv4地址,所以会出现固定2秒左右的延迟。
而curl默认启用「快乐眼球(Happy Eyeballs)」机制,会同时发起IPv4和IPv6的连接请求,哪个先响应就用哪个,所以不会触发超时。

验证方法

你可以直接用127.0.0.1代替localhost调用接口测试,如果延迟消失就可以确认是这个问题:

import httpx
r = httpx.get('http://127.0.0.1:8000/')
print(r.elapsed)
解决方案

有三种常用方案可选:

  • 客户端调用时直接使用127.0.0.1代替localhost,跳过IPv6解析流程
  • 启动uvicorn时同时监听IPv4和IPv6地址,修改启动代码的host参数为::,同时支持IPv4/IPv6访问:
    if __name__ == '__main__':
        uvicorn.run(app, host='::', port=8000)
    
  • 修改本地hosts文件,删除localhost对应的::1映射,强制localhost优先解析为IPv4地址

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:36:03