python - sqlalchemy 错误的烧瓶中未显示代码 500 的自定义错误页面
问题描述
我想为内部错误创建一个自定义错误页面。知道我正在通过重新启动我的数据库服务并尝试在它再次连接之前加载一个页面来测试它。查询返回 OperationalError
我已经禁用了调试模式,所以我没有得到堆栈跟踪,但是我得到了白色背景上的默认文本,而不是自定义的 500 页面。
我不确定这是否是将 sqlalchemy 错误链接到自定义 500 页面的正确方法。如果我没有为 sqlalchemy 定义事件侦听器,则不会调用烧瓶错误处理程序。
@db.event.listens_for(db.engine, "handle_error")
def handle_exception(context):
internal_error(context.original_exception)
@app.errorhandler(500)
def internal_error(error):
db.session.rollback()
return render_template('500.html'), 500
删除 sqlalchemy 事件或重新引发错误也不起作用。
127.0.0.1 - - [11/Jul/2019 17:29:04] "GET /products HTTP/1.1" 500 -
Error on request:
...stack strace...
sqlalchemy.exc.OperationalError: (psycopg2.errors.AdminShutdown) terminating connection due to administrator command
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
更新:现在我考虑了一下。我认为这与 sqlalchemy 没有任何关系。我尝试除以零,看看我是否会得到我的自定义页面,但同样的事情发生了。
解决方案
推荐阅读
- python - Discord 机器人没有响应
- postgresql - 为什么这会导致“org.postgresql.util.PSQLException:列索引超出范围”异常?
- binary-tree - 二叉树级序遍历,左右视图
- websphere - 部署到 IBM bluemix java/spring 服务时出现问题
- rhel - Podman pod 几天后消失,但进程仍在运行并在给定端口上侦听
- vba - Outlook/VBA - 在主题中查找 UID 并在邮件项目中运行 UID 搜索
- python - 如何通知用户正在使用缓存?
- javascript - LocalStorage 问题 - 未正确创建密钥 - 返回 null
- javascript - 如何从画布元素中仅删除一条路径
- r - 如何使用 R 中的 for 循环保存具有不同名称的文件?