georgeyk/loafer

View on GitHub
docs/source/error_handlers.rst

Summary

Maintainability
Test Coverage
Error Handlers
--------------

Every ``Route`` implements a coroutine ``error_handler`` that can be used as an error hook.
This hook are called when unhandled exceptions happen and by default it will only log the
error and **not** acknowledge the message.

``Route`` accepts a callable parameter, ``error_handler``, so you can pass a custom function or
coroutine to replace the default error handler behavior.

The callable should be similar to::

    async def custom_error_handler(exc_info, message):
        ... custom code here ...
        return True

     # Route(..., error_handler=custom_error_handler)


The return value determines if the message that originated the error will be acknowledged or not.
``True`` means acknowledge it, ``False`` will only ignore the message (default behavior).


Sentry
~~~~~~


To integrate with `sentry`_ you will need the `sdk`_ client and your account DSN.

Then you can automatically create an ``error_handler`` with the following code::

    import sentry_sdk
    from loafer.ext.sentry import sentry_handler

    sentry_sdk.init(...)
    error_handler = sentry_handler(sentry_sdk, delete_message=True)


The optional ``delete_message`` parameter controls the message acknowledgement
after the error report. By default, ``delete_message`` is ``False``.

The ``error_handler`` defined can be set on any ``Route`` instance.

.. _sentry: https://sentry.io/
.. _sdk: https://github.com/getsentry/sentry-python