Зависит ли работа Sentry от синхронного или асинхронного вызова?
Что проверяют
Понимаете ли вы, как SDK Sentry отправляет события и может ли он затормозить ваш обработчик или event loop. Следом обычно спрашивают, почему события теряются в коротких скриптах, воркерах или serverless-функциях.
Как отвечать
Короткий ответ: способ отправки от стиля вашего кода не зависит. Python SDK (sentry-sdk) не шлёт событие в момент capture_exception. Он собирает событие, применяет scope и before_send, кладёт результат в очередь, а HTTP-запрос выполняет фоновый поток транспорта. Поэтому ни синхронный обработчик Django, ни корутина FastAPI не ждут ответа сервера Sentry, и event loop сетью не блокируется.
Что от модели выполнения всё-таки зависит:
- потеря событий при выходе: очередь живёт в памяти процесса. При обычном завершении SDK досылает её через
atexitзаshutdown_timeout(по умолчанию 2 секунды), но приos._exit, убийстве по сигналу или заморозке serverless-функции события пропадают. Лечится явнымsentry_sdk.flush(), в интеграции AWS Lambda это сделано за вас; - контекст: в SDK 2.x scope хранится в
contextvars, поэтому теги и пользователь одной корутины не утекают в другую. Для фоновых задач вне запроса контекст изолируют черезsentry_sdk.isolation_scope()илиnew_scope(); - исключения в задачах: ошибка в
asyncio.Task, результат которой никто не ждёт, до Sentry сама не дойдёт. Для этого подключаютAsyncioIntegration; - синхронная часть:
before_sendи процессоры событий выполняются в вызывающем потоке. Тяжёлая логика или сетевой вызов в них тормозят именно ваш код.
Нагрузку от трассировки регулируют через traces_sample_rate, а не выбором синхронного или асинхронного режима.
Где спотыкаются
Предлагают «переключить Sentry в асинхронный режим» для FastAPI, путая стиль своего кода со способом отправки. Отправка и так не блокирует вызывающий код.
Не вызывают flush() в cron-скриптах и форкнутых воркерах, а потом не понимают, почему ошибки не видны в Sentry.
Ставят traces_sample_rate=1.0 на нагруженный прод и получают заметные накладные расходы и быстро съеденную квоту.