使Sentry在多线程环境中报告5XX错误

时间:2018-06-05 14:29:54

标签: django sentry

我正在使用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 :(得分:3)

您可以手动将它们记录到哨兵。

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