Cer*_*rin 6 python django celery sentry
我已将 Sentry 配置为从 Django+Celery 应用程序捕获所有错误。它工作正常,但我发现一个令人讨厌的用例是当我必须重新启动我的 Celery 工作器、PostgreSQL 数据库或消息服务器时,这会导致成千上万种“无法访问数据库/消息服务器”错误。这会污染哨兵报告,有时甚至超过我的活动配额。
他们的文档提到了一个“ignore_exceptions”参数,但我没有在他们旧的弃用客户端中使用它,也不建议将其用于新项目。您将如何在新 API 中执行此操作?
您可以使用before-send按任意条件过滤错误。由于不清楚您实际想要过滤的内容,这里有一个按类型过滤的示例。但是,您可以使用自定义逻辑对其进行扩展,例如按异常消息进行匹配。
import sentry_sdk
def before_send(event, hint):
if 'exc_info' in hint:
exc_type, exc_value, tb = hint['exc_info']
if isinstance(exc_value, (IgnoredErrorFoo, IgnoredErrorBar)):
return None
return event
sentry_sdk.init(before_send=before_send)
Run Code Online (Sandbox Code Playgroud)
我花了一些源码才找到它,但新 SDK 中的选项是“ignore_errors”。它需要一个可迭代对象,其中每个元素可以是字符串或类型(如旧接口)。
我毫不犹豫地链接到它,因为它可能在任何时候改变,但一个内部方法,这里 是它在我的时间写这快照。
作为一个例子(重新实现马库斯的答案):
import sentry_sdk
sentry_dsk.init(ignore_errors=(IgnoredErrorFoo, IgnoredErrorBar))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3193 次 |
| 最近记录: |