Jelajahi Sumber

Using the loader for mail_admins so it can be overridden in the Django Loader

sdcooke 15 tahun lalu
induk
melakukan
db9e52042b
2 mengubah file dengan 9 tambahan dan 3 penghapusan
  1. 7 1
      celery/loaders/base.py
  2. 2 2
      celery/worker/job.py

+ 7 - 1
celery/loaders/base.py

@@ -3,6 +3,8 @@ import sys
 
 from importlib import import_module
 
+from celery.utils.mail import mail_admins
+
 BUILTIN_MODULES = ["celery.task"]
 
 
@@ -75,7 +77,11 @@ class BaseLoader(object):
                 sys.path.remove(cwd)
             except ValueError:          # pragma: no cover
                 pass
-
+    
+    def mail_admins(self, subject, body, fail_silently=False):
+        return mail_admins(subject, body, fail_silently=fail_silently)
+    
+    
     @property
     def conf(self):
         """Loader configuration."""

+ 2 - 2
celery/worker/job.py

@@ -17,7 +17,6 @@ from celery.loaders import current_loader
 from celery.registry import tasks
 from celery.utils import noop, kwdict, fun_takes_kwargs
 from celery.utils import truncate_text, maybe_iso8601
-from celery.utils.mail import mail_admins
 from celery.utils.compat import log_with_extra
 from celery.worker import state
 
@@ -496,7 +495,8 @@ class TaskRequest(object):
                     return
             subject = self.email_subject.strip() % context
             body = self.email_body.strip() % context
-            return mail_admins(subject, body, fail_silently=fail_silently)
+            return current_loader().mail_admins(subject, body,
+                                                fail_silently=fail_silently)
 
     def __repr__(self):
         return '<%s: {name:"%s", id:"%s", args:"%s", kwargs:"%s"}>' % (