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

Django服务运行后出现递归深度超出错误,Postman请求正常

Django服务中requests.delete触发递归深度超出的问题分析

是否由requests库导致?

不是requests库本身的bug,更可能是服务内部的请求循环调用或requests会话/连接池资源泄漏引发的异常:

  • 如果你的Django视图调用apiUrlAddEntries指向的接口后,该接口又间接调用回当前视图,就会形成递归调用链,触发maximum recursion depth exceeded错误。
  • 长时间运行后,requests的连接池资源未正确释放,可能导致内部处理逻辑出现异常递归。

为什么Postman正常但requests调用不行?

  • Postman是外部独立客户端,直接调用目标接口时,不会触发你Django服务内部的代码循环。只有服务内部通过requests发起请求时,才会进入递归调用链。
  • Postman的HTTP客户端实现和requests库完全独立,不受你服务内requests会话资源泄漏的影响,因此能正常执行请求。

排查与解决建议

  • 检查循环调用链:确认apiUrlAddEntries是否指向当前服务的接口,且该接口是否会间接调用发起delete请求的视图,若存在循环则重构逻辑打破闭环。
  • 避免复用会话对象:每次请求创建新的requests会话,防止资源泄漏,修改代码如下:
    with requests.Session() as session:
        response = session.delete(apiUrlAddEntries, verify=False)
    return response
    
  • 临时验证递归问题:可临时调高递归深度上限(不推荐长期使用),添加代码:
    import sys
    sys.setrecursionlimit(1500)  # 仅用于验证是否为循环调用导致
    
  • 排查资源泄漏:使用memory_profiler等工具检测长时间运行后,是否有未释放的requests会话、连接资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:43:12