В настоящее время я работаю над задачами Celery в проекте на основе Django. У нас ворон настроен на отправку всех исключенных исключений и сообщений журнала в Sentry, как описано в documentation.Задачи сельдерея Неперехваченные исключения не отправляются в Sentry
Все работает очень хорошо, за исключением исключенных исключений внутри задач сельдерея. Например, если я выполнить эту задачу:
@app.task
def test_logging():
log.error('Testing logging inside a task')
raise IndexError('Testing exception inside a task')
Я вижу только в Sentry на log.error(...)
но не IndexError
неперехваченного исключения. Я попытался использовать блок try-except
вокруг исключения с log.exception(...)
внутри, и это действительно сработало, но я думаю, что он не масштабируется, чтобы поймать все исключения, подобные этому.
Таким образом, проблема заключается только в неперехваченных исключениях, которые каким-то образом не обрабатываются должным образом.
Это мои текущие версии пакетов:
celery (3.1.17)
raven (5.1.1)
Django (1.7.1)
ли вы помочь мне двигаться в каком-то направлении?
Спасибо за ваше время!
Вы уже пробовали http://raven.readthedocs.org/ru/latest/integrations/celery.html и http://docs.celeryproject.org/en/latest/configuration.html#celeryd-hijack-root -logger? – DRC
Спасибо DRC, наконец, решение, использующее 'register_signal (client)', работало, и теперь мы видим, что в Sentry корректно регистрируются исключенные исключения. Ура! –
рад, что это помогло. – DRC