11"""Sentry configuration module."""
22import logging
3- from typing import Optional
3+ from typing import Optional , Union
44
55import sentry_sdk
66from sentry_sdk .integrations import Integration
@@ -19,6 +19,7 @@ def setup_sentry(
1919 app_slug : Optional [str ] = None ,
2020 version : Optional [str ] = None ,
2121 service_integration : Optional [Integration ] = None ,
22+ failed_request_status_codes : Optional [list [Union [int , range ]]] = None ,
2223) -> None :
2324 """Configuration of Sentry settings.
2425
@@ -29,6 +30,10 @@ def setup_sentry(
2930 version (Optional[str]): Version. Defaults to None.
3031 service_integration (Optional[Integration]): Integration for inter-service
3132 interaction. Defaults to None.
33+ failed_request_status_codes (Optional[list[Union[int, range]]]): A list of integers or
34+ containers (objects that allow membership checks via in) of integers that will determine
35+ which status codes should be reported to Sentry.
36+ See https://docs.sentry.io/platforms/python/integrations/starlette/
3237 """
3338 release = release or f'{ app_slug } @{ version } '
3439
@@ -39,9 +44,16 @@ def setup_sentry(
3944 )
4045 return
4146
47+ failed_request_status_codes = failed_request_status_codes or [range (500 , 599 )]
4248 integrations : list [Integration ] = [
43- StarletteIntegration (transaction_style = 'url' ),
44- FastApiIntegration (transaction_style = 'url' ),
49+ StarletteIntegration (
50+ transaction_style = 'url' ,
51+ failed_request_status_codes = failed_request_status_codes ,
52+ ),
53+ FastApiIntegration (
54+ transaction_style = 'url' ,
55+ failed_request_status_codes = failed_request_status_codes ,
56+ ),
4557 ]
4658 if settings_ .log_integration :
4759 integrations .append (LoggingIntegration (
0 commit comments