About sentry-python-setup
A setup skill for adding Sentry to Python projects, aimed at developers configuring error monitoring, logs, or tracing. It covers common frameworks, async applications, configuration, and verification.
Key features
- 01Install sentry-sdk
- 02Initialize and configure Sentry
- 03Cover Django, Flask, FastAPI, and more
- 04Set environment variables
- 05Verify events and troubleshoot
Use cases
- 01Add error monitoring to a Python app
- 02Configure Sentry in an async app
- 03Troubleshoot missing events or traces
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ getsentry/ sentry-agent-skills --skill sentry-python-setupAfter installing, type/sentry-python-setupin Claude Code to confirm it loaded.
Details
From the project READMESentry Python Setup
Install and configure Sentry in Python projects.
Invoke This Skill When
- User asks to "add Sentry to Python" or "install Sentry" in a Python app
- User wants error monitoring, logging, or tracing in Python
- User mentions "sentry-sdk" or Python frameworks (Django, Flask, FastAPI)
Important: The configuration options and code samples below are examples. Always verify against docs.sentry.io before implementing, as APIs and defaults may have changed.
Install
pip install sentry-sdk
Configure
Initialize as early as possible in your application:
import sentry_sdk
sentry_sdk.init(
dsn="YOUR_SENTRY_DSN",
send_default_pii=True,
# Tracing
traces_sample_rate=1.0,
# Profiling
profile_session_sample_rate=1.0,
profile_lifecycle="trace",
# Logs
enable_logs=True,
)
Async Applications
For async apps, initialize inside an async function:
import asyncio
import sentry_sdk
async def main():
sentry_sdk.init(
dsn="YOUR_SENTRY_DSN",
send_default_pii=True,
traces_sample_rate=1.0,
enable_logs=True,
)
# ... rest of app
asyncio.run(main())
Framework Integrations
Use the same sentry_sdk.init() call shown above. Place it where it runs before your app starts:
| Framework | Where to Init | Notes |
|---|---|---|
| Django | Top of settings.py | Auto-detects Django, no extra install |
| Flask | Before app = Flask(__name__) | Auto-detects Flask |
| FastAPI | Before app = FastAPI() | Auto-detects FastAPI |
| Celery | In Celery worker config | Auto-detects Celery |
| AIOHTTP | Before app creation | Auto-detects AIOHTTP |
Configuration Options
| Option | Description | Default | Min SDK |
|---|---|---|---|
dsn | Sentry DSN | None (SDK no-ops without it) | — |
send_default_pii | Include user data | None | — |
traces_sample_rate | % of transactions traced | None (tracing disabled) | — |
profile_session_sample_rate | % of sessions profiled | None (profiling disabled) | 2.24.1+ |
profile_lifecycle | Profiling mode ("trace" or "manual") | "manual" | 2.24.1+ |
enable_logs | Send logs to Sentry | False | 2.35.0+ |
environment | Environment name | "production" (or SENTRY_ENVIRONMENT env var) | — |
release | Release version | Auto-detected | — |
Environment Variables
The SDK auto-reads these:
SENTRY_DSN=https://[email protected]/456
SENTRY_ENVIRONMENT=production
SENTRY_RELEASE=1.0.0
For sentry-cli (source maps, releases), also set:
SENTRY_AUTH_TOKEN=sntrys_xxx
SENTRY_ORG=my-org
SENTRY_PROJECT=my-project
Or pass DSN in code:
import os
import sentry_sdk
sentry_sdk.init(
dsn=os.environ.get("SENTRY_DSN"),
# ...
)
Verification
# Intentional error to test
division_by_zero = 1 / 0
Or capture manually:
sentry_sdk.capture_message("Test message from Python")
Troubleshooting
| Issue | Solution |
|---|---|
| Errors not appearing | Ensure init() is called early, check DSN |
| No traces | Set traces_sample_rate > 0 |
| IPython errors not captured | Run from file, not interactive shell |
| Async errors missing | Initialize inside async function |