Page MenuHomeSoftware Heritage

D2425.id.diff
No OneTemporary

D2425.id.diff

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

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

Event Timeline