Basic Usage

This gives a basic overview of how to use the raven client with Python directly.

Capture an Error

The most basic use for raven is to record one specific error that occurs:

from raven import Client

client = Client('___DSN___')

try:
    1 / 0
except ZeroDivisionError:
    client.captureException()

Reporting an Event

To report an arbitrary event you can use the capture() method. This is the most low-level method available. In most cases you would want to use the captureMessage() method instead however which directly reports a message:

client.captureMessage('Something went fundamentally wrong')

Adding Context

The raven client internally keeps a thread local mapping that can carry additional information. Whenever a message is submitted to Sentry that additional data will be passed along.

For instance if you use a web framework, you can use this to inject additional information into the context. The basic primitive for this is the context attribute. It provides a merge() and clear() function that can be used:

def handle_request(request):
    client.context.merge({'user': {
        'email': request.user.email
    }})
    try:
        ...
    finally:
        client.context.clear()

Additionally starting with Raven 5.14 you can bind the context to the current thread to enable crumb support by calling activate(). The deactivation happens upon calling clear(). This can also be achieved by using the context object with the with statement. This is needed to enable breadcrumb capturing. Framework integrations typically do this automatically.

These two examples are equivalent:

def handle_request(request):
    client.context.activate()
    client.context.merge({'user': {
        'email': request.user.email
    }})
    try:
        ...
    finally:
        client.context.clear()

With a context manager:

def handle_request(request):
    with client.context:
        client.context.merge({'user': {
            'email': request.user.email
        }})
        try:
            ...
        finally:
            client.context.clear()

Testing the Client

Once you’ve got your server configured, you can test the Raven client by using its CLI:

raven test ___DSN___

If you’ve configured your environment to have SENTRY_DSN available, you can simply drop the optional DSN argument:

raven test

You should get something like the following, assuming you’re configured everything correctly:

$ raven test sync+___DSN___
Using DSN configuration:
  sync+___DSN___

Client configuration:
  servers        : ___API_URL___/api/store/
  project        : ___PROJECT_ID___
  public_key     : ___PUBLIC_KEY___
  secret_key     : ___SECRET_KEY___

Sending a test message... success!