Browse Source

worker rate_limit command: Handle invalid rate limit strings properly.

If the provided rate_limit argument can't be parsed with
celery.utils.timeutils.rate celeryd will reply with::

    {"error": "Invalid rate limit string: %s"}
Ask Solem 14 years ago
parent
commit
40212ee94b
1 changed files with 8 additions and 1 deletions
  1. 8 1
      celery/worker/control/builtins.py

+ 8 - 1
celery/worker/control/builtins.py

@@ -3,10 +3,11 @@ import signal
 from datetime import datetime
 
 from celery import conf
+from celery.backends import default_backend
 from celery.registry import tasks
+from celery.utils import timeutils
 from celery.worker.revoke import revoked
 from celery.worker.control.registry import Panel
-from celery.backends import default_backend
 
 TASK_INFO_FIELDS = ("exchange", "routing_key", "rate_limit")
 
@@ -54,6 +55,12 @@ def rate_limit(panel, task_name, rate_limit, **kwargs):
     :param rate_limit: New rate limit.
 
     """
+
+    try:
+        timeutils.rate(rate_limit)
+    except ValueError, exc:
+        return {"error": "Invalid rate limit string: %s" % exc}
+
     try:
         tasks[task_name].rate_limit = rate_limit
     except KeyError: