|
@@ -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:
|