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

部署在Azure App Service的FastAPI Python应用出现内部服务器错误

解决FastAPI部署到Azure App Service后出现"TypeError: FastAPI.call() missing 1 required positional argument: 'send'"的问题

你遇到的错误核心原因是:FastAPI属于ASGI类型Web框架,而Gunicorn默认使用的WSGI Worker无法适配ASGI应用的调用逻辑——WSGI应用的__call__仅接收2个参数,ASGI则需要3个参数(其中就包含报错中缺失的send)。以下是具体解决建议:

1. 修正Gunicorn启动命令,指定ASGI Worker

启动Gunicorn时必须明确指定支持ASGI的Worker类,比如uvicorn.workers.UvicornWorker,示例命令:

gunicorn main:app -k uvicorn.workers.UvicornWorker

其中main是你的FastAPI主文件名(如main.py),app是你定义的FastAPI实例变量(如app = FastAPI())。

2. 配置Azure App Service的启动命令

两种方式任选其一完成配置:

  • Azure门户配置:进入目标App Service → 「配置」→「常规设置」,在「启动命令」输入框中填入上述Gunicorn命令。
  • Procfile配置:在项目根目录创建Procfile文件,内容为:
    web: gunicorn main:app -k uvicorn.workers.UvicornWorker
    
    部署时Azure会自动读取该文件的启动指令。

3. 确保依赖中包含uvicorn

UvicornWorker来自uvicorn包,因此你的requirements.txt必须包含它,示例依赖列表:

fastapi>=0.95.0
uvicorn>=0.21.1
gunicorn>=20.1.0

如果本地环境依赖版本稳定,建议用pip freeze > requirements.txt生成精确的依赖版本,避免部署环境出现版本不兼容问题。

4. 对齐本地与部署的启动方式

本地测试时尽量使用和部署一致的启动命令(即Gunicorn+UvicornWorker),而非直接用uvicorn main:app --reload,这样能提前发现环境差异导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:55:42