diff --git a/openedx/core/djangoapps/signals/handlers.py b/openedx/core/djangoapps/signals/handlers.py index 29aa1afda9..926580556a 100644 --- a/openedx/core/djangoapps/signals/handlers.py +++ b/openedx/core/djangoapps/signals/handlers.py @@ -4,6 +4,8 @@ This module contains all general use or cross-use handlers. import logging from celery.task import task +from celery_utils.logged_task import LoggedTask +from celery_utils.persist_on_failure import PersistOnFailureTask from django.dispatch import receiver from certificates.models import CertificateGenerationCourseSetting @@ -25,7 +27,14 @@ def _listen_for_course_pacing_changed(sender, course_key, course_self_paced, **k )) -@task() +class _BaseSelfCertTask(PersistOnFailureTask, LoggedTask): # pylint: disable=abstract-method + """ + Include persistence features, as well as logging of task invocation. + """ + abstract = True + + +@task(base=_BaseSelfCertTask) def toggle_self_generated_certs(course_key, course_self_paced): """ Enable or disable self-generated certificates for a course according to pacing.