Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F7122782
D2425.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
1 KB
Subscribers
None
D2425.id.diff
View Options
diff --git a/swh/scheduler/celery_backend/config.py b/swh/scheduler/celery_backend/config.py
--- a/swh/scheduler/celery_backend/config.py
+++ b/swh/scheduler/celery_backend/config.py
@@ -3,9 +3,12 @@
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
+import functools
import logging
import os
import pkg_resources
+import traceback
+from typing import Any, Dict
import urllib.parse
from celery import Celery
@@ -18,8 +21,6 @@
import requests
-from typing import Any, Dict
-
from swh.scheduler import CONFIG as SWH_CONFIG
from swh.core.config import load_named_config, merge_configs
@@ -44,7 +45,27 @@
logger = logging.getLogger(__name__)
+# Celery eats tracebacks in signal callbacks, this decorator catches
+# and prints them.
+# Also tries to notify Sentry if possible.
+def _print_errors(f):
+ @functools.wraps(f)
+ def newf(*args, **kwargs):
+ try:
+ return f(*args, **kwargs)
+ except Exception as exc:
+ traceback.print_exc()
+ try:
+ import sentry_sdk
+ sentry_sdk.capture_exception(exc)
+ except Exception:
+ traceback.print_exc()
+
+ return newf
+
+
@setup_logging.connect
+@_print_errors
def setup_log_handler(loglevel=None, logfile=None, format=None, colorize=None,
log_console=None, log_journal=None, **kwargs):
"""Setup logging according to Software Heritage preferences.
@@ -105,6 +126,7 @@
@celeryd_after_setup.connect
+@_print_errors
def setup_queues_and_tasks(sender, instance, **kwargs):
"""Signal called on worker start.
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Dec 17 2024, 12:00 AM (13 w, 6 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3217237
Attached To
D2425: Print a traceback in case a signal callback crashes.
Event Timeline
Log In to Comment