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

部署Django到Vercel时FetchAjaxs接口超时(504错误)求助

解决方案:Django视图在Vercel部署后504超时问题

1. 排查第三方API访问限制

  • 确认第三方API是否对请求IP有白名单限制:Vercel Lambda的出口IP为动态分配,部分API会拦截非信任IP,需将Vercel的IP段加入第三方API白名单,或确保API密钥验证正常(密钥需在Vercel环境变量中正确配置)。
  • 检查第三方API的请求配额:本地测试时的免费配额可能无法支撑部署后的请求量,触发限流导致请求超时。

2. 给第三方API请求添加超时限制

本地网络稳定时请求不会超时,但Vercel Lambda的网络环境可能存在延迟,必须在视图中给第三方API请求设置明确超时,避免Lambda进程无限等待:

import requests
from django.http import JsonResponse

def FetchAjaxs(request):
    try:
        # 根据API响应速度调整超时时间(示例为15秒)
        api_response = requests.post(
            "第三方API地址",
            data=request.POST,
            timeout=15
        )
        api_response.raise_for_status()  # 主动捕获HTTP错误状态码
        return JsonResponse(api_response.json())
    except requests.exceptions.RequestException as e:
        # 返回具体错误信息用于排查
        return JsonResponse({"error": str(e)}, status=500)

3. 核对Vercel环境变量配置

本地开发时的敏感配置(如第三方API密钥、API_BASE_URL)通常存放在.env文件中,部署到Vercel时需手动在Vercel Dashboard的「Settings > Environment Variables」中添加这些变量,确保视图能正确读取。

4. 查看Vercel函数日志定位问题

504错误仅为表层现象,需查看函数执行日志获取具体原因:

  • 登录Vercel Dashboard,找到对应项目
  • 进入「Functions」页面,定位处理/fetch-ajax/请求的函数
  • 查看函数执行日志,里面会记录请求第三方API时的具体错误(如连接失败、认证错误等)

5. 调整Vercel Lambda配置(若必要)

虽已设置maxDuration: 300,仍需确认:

  • vercel.json中的AppName是否与实际Django项目名称一致,避免WSGI入口路径错误
  • 第三方API的响应时间是否确实超过300秒(若超出,需联系第三方优化接口,或改用异步任务处理)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:22:42