# asyncio | Sentry for Python

The `AsyncioIntegration` integrates with applications doing concurrent code execution using Python's [asyncio](https://docs.python.org/3/library/asyncio.html) module.

## [Install](https://docs.sentry.io/platforms/python/integrations/asyncio.md#install)

```bash
pip install "sentry-sdk"
```

## [Configure](https://docs.sentry.io/platforms/python/integrations/asyncio.md#configure)

Add `AsyncioIntegration()` to your list of `integrations`, enable tracing and be sure to call `sentry_sdk.init()` **at the beginning of the first `async` function you call**, as shown in the example below.

Error Monitoring\[ ]Tracing\[ ]Profiling

`main.py`

```python
import sentry_sdk
from sentry_sdk.integrations.asyncio import AsyncioIntegration

async def main():
    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
        integrations=[
            AsyncioIntegration(),
        ],
    )

    # your code goes here.
    ...

asyncio.run(main())
```

## [Verify](https://docs.sentry.io/platforms/python/integrations/asyncio.md#verify)

Trigger an error in your code and see it show up in [sentry.io](https://sentry.io).

`main.py`

```python
import asyncio

import sentry_sdk
from sentry_sdk.integrations.asyncio import AsyncioIntegration

async def my_task():
    1 / 0  # raises an error!

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

asyncio.run(main())
```

## [Behavior](https://docs.sentry.io/platforms/python/integrations/asyncio.md#behavior)

* All unhandled exceptions in tasks will be captured
* Every executed Task will be instrumented and show up in the performance waterfall on Sentry.io

## [Troubleshooting](https://docs.sentry.io/platforms/python/integrations/asyncio.md#troubleshooting)

Asyncio integration not working

The SDK needs the event loop to be running when instrumenting asyncio. Make sure to call `sentry_sdk.init()` inside of an `async` function.

## [Supported Versions](https://docs.sentry.io/platforms/python/integrations/asyncio.md#supported-versions)

* Python: 3.7+
