Создание Sentry report 5XX error в многопоточной среде - PullRequest
0 голосов
/ 05 июня 2018

Я использую Sentry для включения ведения журнала обработки исключений в моем приложении.

Проблема возникает в следующем фрагменте кода:

@api_view(['POST'])
def testView(request):
    a = 1/0 # This error is reported to Sentry
    TestThread().start()
    return f_response_ok()

class TestThread(threading.Thread):

    def __init__(self, *args, **kwargs):
        super(TestThread, self).__init__(*args, **kwargs)

    def run(self):
        print('Test')
        a = 1/0 # but this one is not
        return True

Возможно ли сделать так, чтобы сообщения Sentry сообщали об ошибках, которыепроизошли в параллельном потоке?

И немного не по теме: я был бы признателен, если бы кто-нибудь дал короткий комментарий относительно того, является ли такой шаблон программирования устаревшим (и вместо этого следует использовать такие вещи, как RabbitMQ).

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете вручную зарегистрировать их для часового.

https://docs.sentry.io/clients/python/#capture-an-error

Предполагая, что вы используете django

from raven.contrib.django.raven_compat.models import client

class TestThread(threading.Thread):

    def __init__(self, *args, **kwargs):
        super(TestThread, self).__init__(*args, **kwargs)

    def run(self):
        print('Test')
        try:
            a = 1/0 # error is not reported in Sentry
        except: # I would suggest putting here expected exceptions
            client.captureException()
        return True
...