之前一直运行顺利的一段代码,突然运行的时候出现了报错http\httptools_impl.py..content = [STATUS_LINE[status_code]]。详细报错内容如下:本文地址:http://www.04007.cn/article/1206.html,未经许可,不得转载.
# 报错内容 await send(message) File "C:\Python3.11.0\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py", line 499, in send content = [STATUS_LINE[status_code]] # 涉及的程序部分 class AppException(Exception): def __init__(code..., message...)
raise AppException(code=801, message="格式错误")排查发现使用raise AppException抛出异常问题的时候,801这个code会导致报错,追踪到程序出错的文件及相关的内容如下:本文地址:http://www.04007.cn/article/1206.html,未经许可,不得转载.
C:\Python3.11.0\Lib\site-packages\uvicorn\protocols\http\httptools_impl.py STATUS_LINE = { status_code: _get_status_line(status_code) for status_code in range(100, 600) }对比发现当前我运行的python项目中 uvicorn 的版本为 0.20.0 ,而之前运行成功的 uvicorn 版本为 0.13.4 。并对比了一下两个版本中的 httptools_impl.py 文件,未去寻找最终导致报错的语句逻辑在哪,但经过尝试,可以判定为更新的版本对传入的code参数有要求,必须在100-600之间,而在之前的版本中虽然也有这个范围,但是不会强制要求不会报错。找到了问题点就好办了,可以通过底层修改传入的code, 并且如果有其它需要传递其它的内容,可以在__init__方法中添加其它的参数进行处理。本文地址:http://www.04007.cn/article/1206.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/1206.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |