python - 在 AWS Lambda 上使用 Flask 的 Sentry 未捕获错误
问题描述
我在 AWS lambda 上部署了一个烧瓶应用程序。为了执行错误跟踪,我想将 Sentry 集成到应用程序中。这是我的应用程序设置
def _handle_error(e):
code = 500
msg = 'Not Found'
if isinstance(e, HTTPException):
code = 404
elif isinstance(e, ValueError):
msg = str(e)
logging.exception(e)
if os.getenv('SENTRY_DSN'):
event_id = sentry_sdk.capture_exception(e)
logging.info(f'Error event was sent to sentry, event id: {event_id}')
return jsonify({'error': msg}), code
def create_app():
app = Flask(__name__)
CORS(app, support_credentials=True)
if os.getenv('SENTRY_DSN'):
sentry_logging = LoggingIntegration(
level=logging.DEBUG, # Capture info and above as breadcrumbs
event_level=logging.ERROR # Send errors as events
)
sentry_sdk.init(dsn=os.getenv('SENTRY_DSN'),
integrations=[FlaskIntegration(), sentry_logging])
app.register_blueprint(bp_routes)
app.register_error_handler(Exception, _handle_error)
我使用烧瓶中的自定义错误处理程序能够返回没有任何敏感信息的通用错误消息。捕获错误时,我尝试在 Sentry 中手动创建事件
event_id = sentry_sdk.capture_exception(e)
在一切正常的情况下在本地运行代码python application.py
,在 Sentry 中使用预期值创建事件。
将相同的代码部署到 lambda 时,不再生成事件。
另外,当我删除自定义烧瓶错误处理程序时
# app.register_error_handler(Exception, _handle_error)
并将其部署到 lambda 事件已生成!
为什么它capture_exception
不能在 lambda 上工作?
解决方案
在 AWS Lambda 下使用任何 Web 框架还需要安装AWS Lambda 集成
对于类似于 AWS Lambda 的服务,通用的无服务器集成可能会变得有用。
推荐阅读
- c# - .NET Core 3.0 默认路由到区域
- vba - 如何使用 VBA 运行 Outlook 的规则?
- flutter - 在水平 ListView 中,如何单独设置项目的高度?
- gcc - gcc编译器无限运行编译Hello World程序
- python - 分类神经网络不学习
- git - 如何压缩所有提交并与 master 合并并推送到 GitHub
- python-3.x - 以键为列的字典到 DataFrame
- powerbi - Power bi 中的 SUM 函数在 Visual(LINE AND STACKED COLUMN CHART)中显示错误的值,但在 CARD 中显示正确的值
- javascript - 带有 vueJS 问题的 Jsonwebtoken 库
- c - strcat_s 如何避免缓冲区溢出问题?