Как запретить sentry регистрировать ошибки на локальном сервере Django?

Я пытаюсь предотвратить запись ошибок в журнал Sentry на моей приборной панели Sentry, пока я работаю на своем локальном сервере (т.е. http://127.0.0.1:8000/). Единственное время, когда я хочу, чтобы Sentry регистрировал ошибки на моей приборной панели, это когда мой код находится в продакшене. Как я могу это сделать? Я попробовал следующее, но это не работает:

if DEBUG == True
    sentry_sdk.init(
        dsn=os.environ.get('SENTRY_DSN', None),
        integrations=[DjangoIntegration()],
    
        # Set traces_sample_rate to 1.0 to capture 100%
        # of transactions for performance monitoring.
        # We recommend adjusting this value in production.
        traces_sample_rate=1.0,
    
        # If you wish to associate users to errors (assuming you are using
        # django.contrib.auth) you may enable sending PII data.
        send_default_pii=True
    )

Попробуйте так:

  if not DEBUG:
    sentry_sdk.init(
        dsn="SENTRY_DSN",
        integrations=[DjangoIntegration()],

        # Set traces_sample_rate to 1.0 to capture 100%
        # of transactions for performance monitoring.
        # We recommend adjusting this value in production.
        traces_sample_rate=1.0,

        # If you wish to associate users to errors (assuming you are using
        # django.contrib.auth) you may enable sending PII data.
        send_default_pii=True
    )

Есть два способа сделать это:

Первый вариант - import sys и проверить наличие runserver (ссылка:https://stackoverflow.com/a/49874564/15205504)

import sys

if (len(sys.argv) >= 2 and sys.argv[1] != 'runserver'):
    sentry_sdk.init(
        dsn=os.environ.get('SENTRY_DSN', None),
        integrations=[DjangoIntegration()],

        # Set traces_sample_rate to 1.0 to capture 100%
        # of transactions for performance monitoring.
        # We recommend adjusting this value in production.
        traces_sample_rate=1.0,

        # If you wish to associate users to errors (assuming you are using
        # django.contrib.auth) you may enable sending PII data.
        send_default_pii=True
)

Второй вариант - указать тип окружения в вашем settings.py. Например, если ваш рабочий сервер - Heroku, вы можете создать переменную env_type в Heroku или в вашем .env файле и установить ее в 'HEROKU', а затем использовать ее следующим образом:

env_type = os.environ.get('env_type', 'LOCAL')

if env_type == 'HEROKU':
    sentry_sdk.init(
        dsn=os.environ.get('SENTRY_DSN', None),
        integrations=[DjangoIntegration()],

        # Set traces_sample_rate to 1.0 to capture 100%
        # of transactions for performance monitoring.
        # We recommend adjusting this value in production.
        traces_sample_rate=1.0,

        # If you wish to associate users to errors (assuming you are using
        # django.contrib.auth) you may enable sending PII data.
        send_default_pii=True
)

Установка переменной dsn в значение None отменяет все операции SDK, поэтому ваша конфигурация должна работать, если вы также не устанавливаете переменную SENTRY_DSN в локальном окружении.

Вернуться на верх