فهرست منبع

Truncate results show in logs to 46 chars.

Ask Solem 15 سال پیش
والد
کامیت
d3d16edbff
2فایلهای تغییر یافته به همراه15 افزوده شده و 2 حذف شده
  1. 7 0
      celery/utils/__init__.py
  2. 8 2
      celery/worker/job.py

+ 7 - 0
celery/utils/__init__.py

@@ -353,3 +353,10 @@ def instantiate(name, *args, **kwargs):
 
     """
     return get_cls_by_name(name)(*args, **kwargs)
+
+
+def truncate_text(text, maxlen=128, suffix="..."):
+    """Truncates text to a maximum number of characters."""
+    if len(text) >= maxlen:
+        return text[:maxlen].rsplit(" ", 1)[0] + suffix
+    return text

+ 8 - 2
celery/worker/job.py

@@ -12,7 +12,8 @@ from celery.datastructures import ExceptionInfo
 from celery.execute.trace import TaskTrace
 from celery.loaders import current_loader
 from celery.registry import tasks
-from celery.utils import noop, kwdict, fun_takes_kwargs, maybe_iso8601
+from celery.utils import noop, kwdict, fun_takes_kwargs
+from celery.utils import truncate_text, maybe_iso8601
 from celery.utils.compat import any
 from celery.utils.mail import mail_admins
 from celery.worker import state
@@ -404,9 +405,14 @@ class TaskRequest(object):
         msg = self.success_msg.strip() % {
                 "id": self.task_id,
                 "name": self.task_name,
-                "return_value": ret_value}
+                "return_value": self.repr_result(ret_value)}
         self.logger.info(msg)
 
+    def repr_result(self, result, maxlen=46):
+        # 46 is the length needed to fit
+        #     "the quick brown fox jumps over the lazy dog" :)
+        return truncate_text(repr(result), maxlen)
+
     def on_failure(self, exc_info):
         """The handler used if the task raised an exception."""
         state.task_ready(self)