asyncpg

Learn about importing the asyncpg integration and how it captures queries from asyncpg.

The AsyncPGIntegration captures queries from asyncpg, which can be viewed in Sentry's Performance page.

To get started, install sentry-sdk from PyPI.

Copied
pip install "sentry-sdk[asyncpg]"

If you have the asyncpg package in your dependencies, the asyncpg integration will be enabled automatically when you initialize the Sentry SDK.

Copied
import sentry_sdk

sentry_sdk.init(
    dsn="___PUBLIC_DSN___",
    # Add data like request headers and IP for users, if applicable;
    # see https://docs.sentry.io/platforms/python/data-management/data-collected/ for more info
    send_default_pii=True,
    # ___PRODUCT_OPTION_START___ performance
    # Set traces_sample_rate to 1.0 to capture 100%
    # of transactions for tracing.
    traces_sample_rate=1.0,
    # ___PRODUCT_OPTION_END___ performance
    # ___PRODUCT_OPTION_START___ profiling
    # To collect profiles for all profile sessions,
    # set `profile_session_sample_rate` to 1.0.
    profile_session_sample_rate=1.0,
    # Profiles will be automatically collected while
    # there is an active span.
    profile_lifecycle="trace",
    # ___PRODUCT_OPTION_END___ profiling
    # ___PRODUCT_OPTION_START___ logs

    # Enable logs to be sent to Sentry
    enable_logs=True,
    # ___PRODUCT_OPTION_END___ logs
)

Copied
import asyncpg

async def main():
    sentry_sdk.init(...)  # same as above

    with sentry_sdk.start_transaction(name="testing_sentry"):
        conn = await asyncpg.connect(DATABASE_URL)
        await conn.fetch("SELECT * FROM pg_catalog.pg_tables;")
        await conn.close()

asyncio.run(main())

This will create a transaction called testing_sentry in the Performance section of sentry.io, and create spans for the connect and the SELECT operations.

It takes a couple of moments for the data to appear in sentry.io.

  • asyncpg: 0.23+
  • Python: 3.7+
Was this helpful?
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").