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

Django异步视图中Ajax调用为何未等待async代码执行就立即返回结果

Django异步视图未等待异步逻辑执行完成问题解决方案

可能的原因及对应解决方法

  • 运行环境不符合异步视图要求
    Django 3.1及以上版本才支持原生异步视图,且异步视图必须运行在ASGI服务器下才能正常执行异步等待逻辑。如果使用默认的python manage.py runserver(WSGI模式)、Gunicorn同步worker等WSGI环境,Django会自动将异步视图包装为同步调用,事件循环适配异常会导致await逻辑没有被正确等待,直接跳过执行。
    解决方法:
  1. 确认Django版本≥3.1
  2. 安装ASGI服务器:pip install uvicorn
  3. 用ASGI模式启动服务:uvicorn 你的项目名.asgi:application
  • 异步逻辑提前抛出异常,未走到等待步骤
    你当前代码的buy_stock方法中,仅捕获了TinkoffInvestmentsError异常并打印,没有返回内容也没有向上抛出,一旦调用create_market_order接口时触发异常,函数会直接返回None,不会执行后续的await asyncio.sleep(5)逻辑,看起来就像立刻返回了结果。
    解决方法:
    完善异常捕获逻辑,增加错误返回便于排查,修改后的异常块参考:
except TinkoffInvestmentsError as e:
    print(f"接口调用出错:{e}")
    return f"操作失败:{str(e)}"

接口返回后查看message字段内容,即可确认是否是接口调用异常导致提前返回。

快速排查测试方案

你可以先屏蔽掉所有股票接口调用逻辑,只保留等待和返回,验证环境是否正常:

async def buy_stock():
    await asyncio.sleep(5)
    return "测试完成"

如果修改后请求确实等待5秒再返回,说明运行环境正常,问题出在股票接口调用逻辑;如果还是立刻返回,说明运行环境配置错误,优先检查ASGI启动配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 07:00:04