【发布时间】:2021-05-14 20:24:02
【问题描述】:
我正在处理的 fastAPI 不会在请求失败时返回回溯,而是返回 500 Internal Server Error with error :
ERROR: ASGI callable returned without starting response.
2021-05-14 16:12:08 - uvicorn.error:409 - ERROR - ASGI callable returned without starting response.
有人遇到过这个问题并知道解决方法吗?
【问题讨论】:
-
能否包含您尝试调用的端点 api 代码?以及带有
curl -Lv http://<yoursite>/? 的请求/响应标头?以及使用的fastapi、uvicorn、python的版本? -
也可以试试
uvicorn your.app:app --log-level debug给uvicorn添加日志级别调试,有什么变化吗? -
@jmunsch 这是一个相当大的代码库,这就是为什么我没有在问题中包含代码。对于版本,fastapi==0.63.0, uvicorn==0.13.3, python 3.8
-
@jmunsch 我确实将日志记录级别设置为调试。它会注销调试信息。但是,我想在服务器失败时打印回溯。注销所有可能的错误是不可能的。
-
@jmunsch 我发现了 fastAPI 不返回回溯的原因,而是一个一般错误。这是由于我为此 API 创建的中间件。从 PrometheusMiddleware 子类化的中间件,在 Prometheus 指标中添加了一个额外的标签,并在 http 请求范围中添加了一个属性。我不知道为什么这会导致 fastAPI 无法正确返回 traceback 的问题。