python - 如何使用 HTTP 500 响应 Falcon 框架中任何未处理的异常

标签 python http falconframework

有没有办法Falcon框架以 HTTP 500 状态响应任何未在资源处理程序中处理的非特定异常?我尝试为异常添加以下处理程序:

api.add_error_handler(Exception, 
                      handler=lambda e, 
                      *_: exec('raise falcon.HTTPInternalServerError("Internal Server Error", "Some error")'))

但这使得无法抛出,例如 falcon.HTTPNotFound — 它由上面的处理程序处理,我收到 500 而不是 404。

最佳答案

是的,这是可能的。您需要定义一个通用错误处理程序,检查异常是否是任何猎鹰错误的实例,如果不是,则引发您的 HTTP_500。

这个例子展示了一种方法。

def generic_error_handler(ex, req, resp, params):
    if not isinstance(ex, HTTPError):
        raise HTTPInternalServerError("Internal Server Error", "Some error")
    else:  # reraise :ex otherwise it will gobble actual HTTPError returned from the application code ref. https://stackoverflow.com/a/60606760/248616
        raise ex

app = falcon.API()
app.add_error_handler(Exception, generic_error_handler)

关于python - 如何使用 HTTP 500 响应 Falcon 框架中任何未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39570652/

相关文章:

http - wget 说 406 Not Acceptable

python - 是否可以从 Python 运行 Falcon 应用程序?

python - SQLAlchemy 和 Falcon - session 初始化

python - 生成给定点 10 公里范围内的纬度/经度列表

python - 在 colab 中找到 pd.head() 的选项

python - 访问字典 Python 中元组中的元素

python-3.x - Falcon 在提供媒体文件(音频、图像、视频)方面有多好?

python - 如何显示与输入匹配的同一行的值?

scala - 如何在 Play 中发送多部分/相关请求

javascript - Jquery AJAX 类型属性