Ver Fonte

utils.compat.log_with_extra: Support the extra logging argument, by removing it for Python 2.4

Ask Solem há 14 anos atrás
pai
commit
7c72ee2f26
3 ficheiros alterados com 25 adições e 17 exclusões
  1. 9 0
      celery/utils/compat.py
  2. 9 8
      celery/worker/controllers.py
  3. 7 9
      celery/worker/job.py

+ 9 - 0
celery/utils/compat.py

@@ -298,6 +298,8 @@ import sys
 
 from logging import LogRecord
 
+log_takes_extra = "extra" in inspect.getargspec(logging.Logger._log)[0]
+
 # The func argument to LogRecord was added in 2.5
 if "func" not in inspect.getargspec(LogRecord.__init__)[0]:
     def LogRecord(name, level, fn, lno, msg, args, exc_info, func):
@@ -405,6 +407,12 @@ try:
 except ImportError:
     LoggerAdapter = _CompatLoggerAdapter
 
+
+def log_with_extra(logger, level, msg, *args, **kwargs):
+    if not log_takes_extra:
+        kwargs.pop("extra", None)
+    return logger.log(level, msg, *args, **kwargs)
+
 ############## itertools.izip_longest #######################################
 
 try:
@@ -427,6 +435,7 @@ except ImportError:
         except IndexError:
             pass
 
+
 ############## itertools.chain.from_iterable ################################
 from itertools import chain
 

+ 9 - 8
celery/worker/controllers.py

@@ -3,12 +3,14 @@
 Worker Controller Threads
 
 """
+import logging
 import sys
 import threading
 import traceback
 from Queue import Empty as QueueEmpty
 
 from celery.app import app_or_default
+from celery.utils.compat import log_with_extra
 
 
 class Mediator(threading.Thread):
@@ -54,14 +56,13 @@ class Mediator(threading.Thread):
         try:
             self.callback(task)
         except Exception, exc:
-            self.logger.error("Mediator callback raised exception %r\n%s" % (
-                exc, traceback.format_exc()), exc_info=sys.exc_info(), extra={
-                    "data": {
-                        "hostname": task.hostname,
-                        "id": task.task_id,
-                        "name": task.task_name,
-                    }
-                })
+            log_with_extra(self.logger, logging.ERROR,
+                           "Mediator callback raised exception %r\n%s" % (
+                               exc, traceback.format_exc()),
+                           exc_info=sys.exc_info(),
+                           extra={"data": {"hostname": task.hostname,
+                                           "id": task.task_id,
+                                           "name": task.task_name}})
 
     def run(self):
         while not self._shutdown.isSet():

+ 7 - 9
celery/worker/job.py

@@ -1,3 +1,4 @@
+import logging
 import os
 import sys
 import time
@@ -15,6 +16,7 @@ from celery.execute.trace import TaskTrace
 from celery.registry import tasks
 from celery.utils import noop, kwdict, fun_takes_kwargs
 from celery.utils import truncate_text
+from celery.utils.compat import log_with_extra
 from celery.utils.timeutils import maybe_iso8601
 from celery.worker import state
 
@@ -489,15 +491,11 @@ class TaskRequest(object):
                    "args": self.args,
                    "kwargs": self.kwargs}
 
-        self.logger.error(self.error_msg.strip() % context,
-                          exc_info=exc_info,
-                          extra={
-                              "data": {
-                                  "hostname": self.hostname,
-                                  "id": self.task_id,
-                                  "name": self.task_name,
-                              }
-                          })
+        log_with_extra(self.logger, logging.ERROR,
+                       self.error_msg.strip() % context,
+                       extra={"data": {"hostname": self.hostname,
+                                       "id": self.task_id,
+                                       "name": self.task_name}})
 
         task_obj = tasks.get(self.task_name, object)
         self.send_error_email(task_obj, context, exc_info.exception,