From 6e88c0096942e008bb55d29b5696a058a2c1e013 Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Sun, 20 Nov 2022 14:20:28 -0700 Subject: Don't waste DB rows on bad inbox actors Seems Sidekiq will keep trying to deliver messages even when the actor no longer exists? --- core/exceptions.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'core') diff --git a/core/exceptions.py b/core/exceptions.py index 4475538..f8c0c50 100644 --- a/core/exceptions.py +++ b/core/exceptions.py @@ -1,3 +1,9 @@ +import traceback + +from asgiref.sync import sync_to_async +from django.conf import settings + + class ActivityPubError(BaseException): """ A problem with an ActivityPub message @@ -8,3 +14,30 @@ class ActorMismatchError(ActivityPubError): """ The actor is not authorised to do the action we saw """ + + +def capture_message(message: str): + """ + Sends the informational message to Sentry if it's configured + """ + if settings.SENTRY_ENABLED: + from sentry_sdk import capture_message + + capture_message(message) + elif settings.DEBUG: + print(message) + + +def capture_exception(exception: BaseException): + """ + Sends the exception to Sentry if it's configured + """ + if settings.SENTRY_ENABLED: + from sentry_sdk import capture_exception + + capture_exception(exception) + elif settings.DEBUG: + traceback.print_exc() + + +acapture_exception = sync_to_async(capture_exception, thread_sensitive=False) -- cgit v1.2.3