arq

Learn about using Sentry with arq.

The arq integration adds support for the arq job queue system.

Install sentry-sdk from PyPI with the arq extra.

Copied
pip install --upgrade "sentry-sdk[arq]"

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

Copied
import sentry_sdk

sentry_sdk.init(
    dsn="https://examplePublicKey@o0.ingest.sentry.io/0",
    # Set traces_sample_rate to 1.0 to capture 100%
    # of transactions for tracing.
    traces_sample_rate=1.0,
    # Set profiles_sample_rate to 1.0 to profile 100%
    # of sampled transactions.
    # We recommend adjusting this value in production.
    profiles_sample_rate=1.0,
)

Copied
import asyncio

from arq import create_pool
from arq.connections import RedisSettings

async def main():
    sentry_sdk.init(...)  # same as above
    redis = await create_pool(RedisSettings())

    with sentry_sdk.start_transaction(name="testing_sentry"):
        r = await redis.enqueue_job("add_numbers", 1, 2)

asyncio.run(main())

When you run run.py it will create a transaction called testing_sentry in the Performance section of sentry.io, and create a span for enqueing the job.

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

Copied
import sentry_sdk
from sentry_sdk.integrations.arq import ArqIntegration

sentry_sdk.init(...)  # same as above

async def add_numbers(ctx, a, b):
    1/0 # raises an error!
    return a + b

class WorkerSettings:
    functions = [add_numbers]

When you run a worker with arq demo.WorkerSettings it will create a transaction called add_numbers in the Performance section of sentry.io, and will also create and issue in Sentry and connect it to the transaction.

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

  • ARQ: 0.23+
  • Python: 3.7+
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").