跳转到主要内容

用于向Sentry报告错误的aiohttp中间件

项目描述

CI Status

一个用于向aiohttp报告失败请求的Sentry服务器中间件

用法

只需将SentryMiddleware作为中间件添加即可

from aiohttp import web
from aiohttp_sentry import SentryMiddleware
app = web.Application(middlewares=[SentryMiddleware()])

配置

如果您想自定义错误报告,可以使用可选的sentry_kwargs参数,它是一个传递给底层Sentry库raven的kwargs字典。通过这种方式,您可以指定环境详情,过滤特定异常等

from aiohttp import web
from aiohttp_sentry import SentryMiddleware
app = web.Application(
    middlewares=(
        SentryMiddleware({
            'environment': 'foo',
            'release': 'bar',
            'ignore_exceptions': 'aiohttp.HTTPClientError'
        }),
        # ...
    ),
)

如果您使用的是标准库的logging模块,我们有一个方便的参数可以为您补丁,以便将日志调用自动发送到Sentry

import logging
from aiohttp import web
from aiohttp_sentry import SentryMiddleware

app = web.Application(
    middlewares=[SentryMiddleware(patch_logging=True, sentry_log_level=logging.WARNING)],
)

将数据附加到事件

默认情况下,aiohttp-sentry将此数据与报告的异常一起传递

  • HTTP方案

  • HTTP方法

  • URL

  • 查询字符串

  • 请求头(包括cookie)

  • 请求者的IP地址

如果您需要在Sentry中发送更多数据,可以通过从SentryMiddleware派生并重写get_extra_data方法来实现,该方法默认返回所有上述内容。以下是如何实现它的示例

class DetailedSentryMiddleware(SentryMiddleware):

    async def get_extra_data(self, request):
        return {
            **await super().get_extra_data(request),
            'settings': request.app['settings'],
        }

虽然 get_extra_data 是一个协程,这意味着它可以执行数据库查询、API调用或其他I/O操作,但请谨慎使用!确保您理解每次发生错误时执行昂贵的操作的含义。如果错误的根本原因是数据库过载,您只会使问题变得更糟,而且甚至无法获取您想要的其他信息。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源代码分发

aiohttp-sentry-0.6.0.tar.gz (3.9 kB 查看散列值)

上传时间 源代码

构建分发

aiohttp_sentry-0.6.0-py3-none-any.whl (4.7 kB 查看散列值)

上传时间 Python 3

由以下机构支持