用于向Sentry报告错误的aiohttp中间件
项目描述
一个用于向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 的散列值
算法 | 散列值 | |
---|---|---|
SHA256 | ea059c72553ae12f66bac020d4af98aa37399754b647f01258b5ec04f34d3bda |
|
MD5 | d164d4816474f9f64e3f44db5a4527e7 |
|
BLAKE2b-256 | 7833b0053af4c7027e88606e8ff2498a7f4fe8c36397619bfcd07b5a20f5ffc5 |
关闭
aiohttp_sentry-0.6.0-py3-none-any.whl 的散列值
算法 | 散列值 | |
---|---|---|
SHA256 | 05ef17aabc74c4c464a405e0a5c95f062f80ad0178d9cb2b5e613d0656741ea6 |
|
MD5 | 104cb7eece9e5cb42205be2fab6757a0 |
|
BLAKE2b-256 | bcfb05ebe534849733bf1d94cf6b51e3ec14c58e217e6a8f7ae95bb1a9cfd8ec |