
HTTP_422_UNPROCESSABLE_ENTITY is deprecated
快速结论:该报错是 Starlette 的废弃警告,通常出现在使用 Gradio 6.19.0 及更高版本的环境下。优先确认你的 gradio/routes.py 文件中是否仍在使用已废弃的 HTTP_422_UNPROCESSABLE_ENTITY 常量。
问题场景
用户在使用 Gradio 框架(版本 6.19.0)启动应用时,终端或日志中打印出 StarletteDeprecationWarning 警告,提示 HTTP_422_UNPROCESSABLE_ENTITY 已被弃用。此警告不影响功能,但会污染日志输出。
报错原文
StarletteDeprecationWarning: 'HTTP_422_UNPROCESSABLE_ENTITY' is deprecated. Use 'HTTP_422_UNPROCESSABLE_CONTENT' instead.
原因分析
Starlette 1.3.1 及以上版本遵循 RFC 9110,将 HTTP 422 状态码的命名从 HTTP_422_UNPROCESSABLE_ENTITY 修改为 HTTP_422_UNPROCESSABLE_CONTENT。Gradio 的 gradio/routes.py 中仍使用了旧的常量名,因此触发该废弃警告。
环境排查
- Python:未指定版本,建议 3.8+
- Gradio:6.19.0(Issue 中使用的版本)
- Starlette:1.3.1(Issue 中使用的版本)
解决步骤
- 找到 Gradio 安装路径下的
routes.py文件。通常位于:site-packages/gradio/routes.py。 - 搜索
HTTP_422_UNPROCESSABLE_ENTITY字符串。 - 将其替换为
HTTP_422_UNPROCESSABLE_CONTENT。
修改内容仅为一行重命名(one-line rename),可优先尝试此修改。
验证方法
重新启动 Gradio 应用,确认终端不再输出 StarletteDeprecationWarning 关于 HTTP_422_UNPROCESSABLE_ENTITY 的警告信息。


![[Bug]: [ERROR][Exception]: Exceptions from Trio nursery (2 sub-exceptions) -- **ERROR**: ERROR preTokenId.size[96805] must <= maxPositionEmb](https://www.chat-gpts.plus/wp-content/uploads/2026/07/6838-0dc40aa0-768x403.jpg)
