Obecnie pracuję z zadań Celery w projekcie opartym na Django. Mamy kruka skonfigurowanego do wysyłania wszystkich niezatrzonych wyjątków i logowania wiadomości do Sentry, jak opisano w documentation.Zadania selekcji niezatrzonowane wyjątki nie są wysyłane do Sentry
Wszystko działa całkiem nieźle, z wyjątkiem nieprzechwyconych wyjątków wewnątrz zadań związanych z selerem. Na przykład, jeśli mogę uruchomić tego zadania:
@app.task
def test_logging():
log.error('Testing logging inside a task')
raise IndexError('Testing exception inside a task')
widzę tylko w Sentry z log.error(...)
ale nie IndexError
przechwycony wyjątek. Próbowałem używać bloku try-except
wokół wyjątku z log.exception(...)
wewnątrz i działało, ale myślę, że nie jest skalowalne, aby wychwycić wszystkie wyjątki w ten sposób.
Problem dotyczy tylko niezatartych wyjątków, które w jakiś sposób nie są obsługiwane prawidłowo.
Są to moje aktualne wersje pakietów:
celery (3.1.17)
raven (5.1.1)
Django (1.7.1)
Pomożesz mi poruszać się w jakimś kierunku?
Dziękujemy za poświęcony czas!
Czy próbowałeś już http://raven.readthedocs.org/en/latest/integrations/celery.html i http://docs.celeryproject.org/en/latest/configuration.html#celeryd-hijack-root -logger? – DRC
Dzięki DRC, w końcu rozwiązanie działające za pomocą 'register_signal (client)' zadziałało, a teraz widzimy niezatłoczone wyjątki logowane poprawnie w Sentry. Twoje zdrowie! –
cieszę się, że pomogło. – DRC