Преглед на файлове

Added Task.send_error_emails + Task.error_whitelist, so these can be configured per task instead of just globally.

On a sidenote, celery.worker.job no longer uses celery.conf (yipeee!)
Ask Solem преди 14 години
родител
ревизия
8aac58022e
променени са 2 файла, в които са добавени 12 реда и са изтрити 7 реда
  1. 10 4
      celery/task/base.py
  2. 2 3
      celery/worker/job.py

+ 10 - 4
celery/task/base.py

@@ -162,10 +162,14 @@ class Task(object):
         If true, errors will be stored even if the task is configured
         to ignore results.
 
-    .. attribute:: disable_error_emails
+    .. attribute:: send_error_emails
 
-        Disable all error e-mails for this task (only applicable if
-        ``settings.CELERY_SEND_TASK_ERROR_EMAILS`` is on.)
+        If true, an e-mail will be sent to the admins whenever
+        a task of this type raises an exception.
+
+    .. attribute:: error_whitelist
+
+        List of exception types to send error e-mails for.
 
     .. attribute:: serializer
 
@@ -226,7 +230,9 @@ class Task(object):
 
     ignore_result = conf.IGNORE_RESULT
     store_errors_even_if_ignored = conf.STORE_ERRORS_EVEN_IF_IGNORED
-    disable_error_emails = False
+    send_error_emails = conf.CELERY_SEND_TASK_ERROR_EMAILS
+    error_whitelist = conf.CELERY_TASK_ERROR_WHITELIST
+    disable_error_emails = False # FIXME
     max_retries = 3
     default_retry_delay = 3 * 60
     serializer = conf.TASK_SERIALIZER

+ 2 - 3
celery/worker/job.py

@@ -6,7 +6,6 @@ import warnings
 
 from datetime import datetime
 
-from celery import conf
 from celery import log
 from celery import platform
 from celery.datastructures import ExceptionInfo
@@ -442,8 +441,8 @@ class TaskRequest(object):
 
         task_obj = tasks.get(self.task_name, object)
         self.send_error_email(task_obj, context, exc_info.exception,
-                              enabled=conf.CELERY_SEND_TASK_ERROR_EMAILS,
-                              whitelist=conf.CELERY_TASK_ERROR_WHITELIST)
+                              enabled=task_obj.send_error_emails
+                              whitelist=task_obj.error_whitelist)
 
     def send_error_email(self, task, context, exc,
             whitelist=None, enabled=False, fail_silently=True):