среда, 22 июня 2016 г.

Не работает python RQ c Sentry?

Чтобы заставить ошибки ваших заданий отправляться из rq worker'а прямо в замечательную Sentry, в команде rq есть специальная опция --sentry-dsn. К сожалению, на практике выясняется, что она совсем не работает. Но почему?

В документации к rq указано, что необходимо использовать HTTPTransport или RequestsHTTPTransport  в клиенте raven.


from raven import Client
from raven.transport.http import HTTPTransport
from rq.contrib.sentry import register_sentry

client = Client('<YOUR_DSN>', transport=HTTPTransport)
register_sentry(client, worker)

(http://python-rq.org/patterns/sentry/)

Но, у rq в cli.py (command line interface) мы видим, что это не выполнено:

from rq.contrib.sentry import register_sentry
client = Client(sentry_dsn)

и не составит труда исправить на

from rq.contrib.sentry import register_sentry
from raven.transport.http import HTTPTransport
client = Client(sentry_dsn, transport=HTTPTransport )

Готово! Теперь ваши ошибки из rq workera отправятся прямо в Sentry при использовании в команде запуска rq из консоли опции "sentry-dsn".

Исправленный код можно взять на тут.

Комментариев нет:

Отправить комментарий