Explorar o código

Flag sending mail and storing results as blocking sections

Ask Solem %!s(int64=11) %!d(string=hai) anos
pai
achega
35c94dd77a
Modificáronse 2 ficheiros con 10 adicións e 5 borrados
  1. 4 2
      celery/backends/base.py
  2. 6 3
      celery/utils/mail.py

+ 4 - 2
celery/backends/base.py

@@ -19,6 +19,7 @@ import sys
 from datetime import timedelta
 
 from billiard.einfo import ExceptionInfo
+from kombu.async import maybe_block
 from kombu.serialization import (
     dumps, loads, prepare_accept_content,
     registry as serializer_registry,
@@ -198,8 +199,9 @@ class BaseBackend(object):
     def store_result(self, task_id, result, status, traceback=None, **kwargs):
         """Update task state and result."""
         result = self.encode_result(result, status)
-        self._store_result(task_id, result, status, traceback, **kwargs)
-        return result
+        with maybe_block():
+            self._store_result(task_id, result, status, traceback, **kwargs)
+            return result
 
     def forget(self, task_id):
         self._cache.pop(task_id, None)

+ 6 - 3
celery/utils/mail.py

@@ -15,6 +15,8 @@ import warnings
 
 from email.mime.text import MIMEText
 
+from kombu.async import maybe_block
+
 from .functional import maybe_list
 
 try:
@@ -185,6 +187,7 @@ py-celery at {{hostname}}.
 
     def send(self, context, exc, fail_silently=True):
         if self.should_send(context, exc):
-            self.task.app.mail_admins(self.format_subject(context),
-                                      self.format_body(context),
-                                      fail_silently=fail_silently)
+            with maybe_block():
+                self.task.app.mail_admins(self.format_subject(context),
+                                          self.format_body(context),
+                                          fail_silently=fail_silently)