瀏覽代碼

dump_active/dump_reserved/dump_schedule now replies with detailed task requests.

Containing the original arguments and fields of the task requested.

In addition the remote control command ``set_loglevel`` has been added,
this only changes the loglevel for the mainprocess logger.
Ask Solem 14 年之前
父節點
當前提交
aae0f21820
共有 1 個文件被更改,包括 21 次插入4 次删除
  1. 21 4
      celery/worker/control/builtins.py

+ 21 - 4
celery/worker/control/builtins.py

@@ -1,6 +1,7 @@
 from datetime import datetime
 
 from celery import conf
+from celery import log
 from celery.backends import default_backend
 from celery.registry import tasks
 from celery.utils import timeutils
@@ -48,6 +49,16 @@ def disable_events(panel):
     return {"ok": "events already disabled"}
 
 
+@Panel.register
+def set_loglevel(panel, loglevel=None):
+    if loglevel is not None:
+        if not isinstance(loglevel, int):
+            loglevel = conf.LOG_LEVELS[loglevel.upper()]
+        log.get_default_logger(loglevel=loglevel)
+    return {"ok": loglevel}
+
+
+
 @Panel.register
 def rate_limit(panel, task_name, rate_limit, **kwargs):
     """Set new rate limit for a task type.
@@ -88,7 +99,7 @@ def rate_limit(panel, task_name, rate_limit, **kwargs):
 
 
 @Panel.register
-def dump_schedule(panel, **kwargs):
+def dump_schedule(panel, safe=False, **kwargs):
     schedule = panel.listener.eta_schedule
     if not schedule.queue:
         panel.logger.info("--Empty schedule--")
@@ -101,11 +112,16 @@ def dump_schedule(panel, **kwargs):
     info = map(formatitem, enumerate(schedule.info()))
     panel.logger.info("* Dump of current schedule:\n%s" % (
                             "\n".join(info, )))
-    return info
+    scheduled_tasks = []
+    for item in schedule.info():
+        scheduled_tasks.append({"eta": item["eta"],
+                                "priority": item["priority"],
+                                "request": item["item"].info(safe=safe)})
+    return scheduled_tasks
 
 
 @Panel.register
-def dump_reserved(panel, **kwargs):
+def dump_reserved(panel, safe=False, **kwargs):
     ready_queue = panel.listener.ready_queue
     reserved = ready_queue.items
     if not reserved:
@@ -114,7 +130,8 @@ def dump_reserved(panel, **kwargs):
     info = map(repr, reserved)
     panel.logger.info("* Dump of currently reserved tasks:\n%s" % (
                             "\n".join(info, )))
-    return info
+    return [request.info(safe=safe)
+            for request in reserved]
 
 
 @Panel.register