Как игнорировать определенные ошибки Python из Sentry Capture

У меня Sentry настроен на сбор всех ошибок 9X_celery из приложения Django + Celery. Он работает 9X_python нормально, но я нахожу неприятный вариант 9X_py использования, когда мне приходится перезапускать 9X_python-interpreter мои рабочие Celery, базу данных PostgreSQL 9X_pythonic или сервер обмена сообщениями, что вызывает 9X_python-interpreter тысячи различных ошибок типа «база данных 9X_sentry / сервер обмена сообщениями недоступен». Это 9X_pythonista загрязняет отчеты Sentry, а иногда даже 9X_python превышает мою квоту событий.

Their docs упомянул параметр 9X_pythonic "ignore_exceptions", но в их старом 9X_sentry устаревшем клиенте я не использую, и его 9X_sentry не рекомендуется использовать для новых 9X_python-shell проектов. Как бы вы сделали это в новом 9X_python-interpreter API?

10
0
3
Общее количество ответов: 3

Ответ #1

Ответ на вопрос: Как игнорировать определенные ошибки Python из Sentry Capture

Мне потребовалось некоторое время, чтобы 9X_py найти его, но в новом SDK есть опция ignore_errors. Требуется 9X_py итерация, где каждый элемент может быть 9X_pythonista либо строкой, либо типом (как в старом интерфейсе).

Я 9X_python-shell не решаюсь ссылаться на него, потому что 9X_python-shell это внутренний метод, который может измениться 9X_py в любое время, но here это снимок на момент 9X_python написания этой статьи.

В качестве примера 9X_django (повторная реализация ответа Маркуса):

import sentry_sdk

sentry_dsk.init(ignore_errors=(IgnoredErrorFoo, IgnoredErrorBar))

16
1

  • @mlissner Новый (связанный большой двоичный объект имеет дат ...

Ответ #2

Ответ на вопрос: Как игнорировать определенные ошибки Python из Sentry Capture

Вы можете использовать before-send для фильтрации ошибок 9X_celery по произвольным критериям. Поскольку неясно, по 9X_python-shell чему вы действительно хотите фильтровать, вот 9X_pythonic пример, который фильтрует по типу. Однако 9X_pythonista вы можете расширить его с помощью настраиваемой 9X_python-interpreter логики, например, совпадение по сообщению 9X_celery об исключении.

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)

15
0

Ответ #3

Ответ на вопрос: Как игнорировать определенные ошибки Python из Sentry Capture

Чтобы игнорировать все связанные ошибки, есть 9X_django два способа:

  1. Использовать before_send
import sentry_sdk
from rest_framework.exceptions import ValidationError

def before_send(event, hint):
    if 'exc_info' in hint:
        exc_type, exc_value, tb = hint['exc_info'] 
        if isinstance(exc_value, (KeyError, ValidationError)):
            return None
    return event

sentry_sdk.init(
    dsn='SENTRY_DSN',
    before_send=before_send
)
  1. Используйте ignore_errors
import sentry_sdk
from rest_framework.exceptions import ValidationError

sentry_dsk.init(
    dsn='SENTRY_DSN',
    ignore_errors=[
       KeyError() ,
       ValidationError('my error message'),
    ]  # All event error (KeyError, ValidationError) will be ignored
)

Чтобы игнорировать конкретную 9X_pythonista ошибку события, просто проигнорируйте это 9X_python-shell событие ValidationError('my error message') с помощью настраиваемого def before_send:

def before_send(event, hint):
    if 'exc_info' in hint:
        exc_type, exc_value, tb = hint['exc_info'] 
        if exc_value.args[0] in ['my error message', 'my error message 2', ...]):
            return None
    return event

Это задокументировано 9X_py в документации по sentry-python по адресу: https://sentry-python.readthedocs.io/en/latest/api.html

4
1

  • @SolidCoder я обновил ссылку на документ часового<p><span ...