The FastAPI integration adds support for the FastAPI Framework .
InstallInstall sentry-sdk
from PyPI with the fastapi
extra:
Copied
pip install "sentry-sdk[fastapi]"
Configure
If you have the fastapi
package in your dependencies, the FastAPI integration will be enabled automatically when you initialize the Sentry SDK.
Error Monitoring Logs Tracing Profiling
Copied
import sentry_sdk
sentry_sdk.init(
dsn="https://examplePublicKey@o0.ingest.sentry.io/0",
send_default_pii=True,
traces_sample_rate=1.0,
profile_session_sample_rate=1.0,
profile_lifecycle="trace",
_experiments={
"enable_logs": True,
},
)
Verify
Copied
from fastapi import FastAPI
sentry_sdk.init(...)
app = FastAPI()
@app.get("/sentry-debug")
async def trigger_error():
division_by_zero = 1 / 0
When you point your browser to http://localhost:8000/sentry-debug a transaction will be created in the Performance section of sentry.io . Additionally, an error event will be sent to sentry.io and will be connected to the transaction.
It takes a couple of moments for the data to appear in sentry.io .
Behaviour Issue ReportingThe following information about your FastAPI project will be available to you on Sentry.io:
failed_request_status_codes
option.send_default_pii
to True
.The following parts of your FastAPI project are monitored:
send
and receive
callbacksThe parameter traces_sample_rate needs to be set when initializing the Sentry SDK for performance measurements to be recorded.
OptionsBy adding FastApiIntegration
to your sentry_sdk.init()
call explicitly, you can set options for FastApiIntegration
to change its behavior. Because FastAPI is based on the Starlette framework, both integrations, StarletteIntegration
and FastApiIntegration
, must be instantiated.
Copied
from sentry_sdk.integrations.starlette import StarletteIntegration
from sentry_sdk.integrations.fastapi import FastApiIntegration
sentry_sdk.init(
integrations=[
StarletteIntegration(
transaction_style="endpoint",
failed_request_status_codes={403, *range(500, 599)},
http_methods_to_capture=("GET",),
),
FastApiIntegration(
transaction_style="endpoint",
failed_request_status_codes={403, *range(500, 599)},
http_methods_to_capture=("GET",),
),
]
)
You can pass the following keyword arguments to StarletteIntegration()
and FastApiIntegration()
:
transaction_style
:
This option lets you influence how the transactions are named in Sentry. For example:
Copied
import sentry_sdk
from sentry_sdk.integrations.starlette import StarletteIntegration
from sentry_sdk.integrations.fastapi import FastApiIntegration
sentry_sdk.init(
integrations=[
StarletteIntegration(
transaction_style="endpoint",
),
FastApiIntegration(
transaction_style="endpoint",
),
],
)
app = FastAPI()
@app.get("/catalog/product/{product_id}")
async def product_detail(product_id):
return {...}
In the above code, the transaction name will be:
"/catalog/product/{product_id}"
if you set transaction_style="url"
"product_detail"
if you set transaction_style="endpoint"
The default is "url"
.
failed_request_status_codes
:
A set
of integers that will determine which status codes should be reported to Sentry.
The failed_request_status_codes
option determines whether HTTPException
exceptions should be reported to Sentry. Unhandled exceptions that don't have a status_code
attribute will always be reported to Sentry.
Examples of valid failed_request_status_codes
:
{500}
will only send events on HTTP 500.{400, *range(500, 600)}
will send events on HTTP 400 as well as the 5xx range.{500, 503}
will send events on HTTP 500 and 503.set()
(the empty set) will not send events for any HTTP status code.The default is {*range(500, 600)}
, meaning that all 5xx status codes are reported to Sentry.
http_methods_to_capture
:
A tuple containing all the HTTP methods that should create a transaction in Sentry.
The default is ("CONNECT", "DELETE", "GET", "PATCH", "POST", "PUT", "TRACE",)
.
(Note that OPTIONS
and HEAD
are missing by default.)
The http_methods_to_capture
option.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4