You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask如何同时实现自定义错误页渲染和Sentry告警触发?

Flask同时实现自定义错误页与Sentry异常告警的方案

出现该问题的核心原因是Flask的errorhandler捕获异常后会终止异常向上传递,而默认配置下Sentry的WSGI中间件仅会捕获未被应用层处理的异常,和Django内置异常信号机制的行为不同。可通过以下两种方案实现需求:

方案1:手动在错误处理器中上报异常(灵活可控)

在自定义错误处理器中,先调用Sentry的上报方法传递异常,再返回自定义错误页。你可以根据异常类型、状态码过滤不需要上报的请求(如4xx类用户侧错误):

import sentry_sdk
from werkzeug.exceptions import HTTPException

@app.errorhandler(Exception)
def internal_server_error(error):
    # 仅上报5xx级别HTTP异常、非HTTP类业务异常
    if not isinstance(error, HTTPException) or error.code >= 500:
        sentry_sdk.capture_exception(error)
    
    template_name, context = ErrorPages().error500(error)
    return (render_template(template_name, **context), 500)

方案2:配置Sentry Flask集成自动捕获(无需修改错误处理逻辑)

新版Sentry SDK的Flask集成支持直接捕获经过Flask errorhandler处理的异常,只需要在初始化Sentry时开启对应配置即可,不需要修改原有错误处理器代码:

import sentry_sdk
from sentry_sdk.integrations.flask import FlaskIntegration

sentry_sdk.init(
    dsn="你的Sentry服务DSN",
    integrations=[
        FlaskIntegration(
            capture_exceptions=True,
        ),
    ],
    # 其他Sentry配置项
)

注意事项

  • 如果需要过滤不需要上报的异常,可以在Sentry初始化时添加ignore_errors参数配置过滤规则,也可以在错误处理器中添加判断逻辑跳过上报。
  • 建议将sentry-sdk升级到最新稳定版,避免旧版本集成存在的捕获异常失败问题。

内容的提问来源于stack exchange,提问作者coredumperror

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 17:54:06