Mher Movsisyan преди 13 години
родител
ревизия
1e2accff95
променени са 3 файла, в които са добавени 7 реда и са изтрити 3 реда
  1. 1 1
      celery/app/amqp.py
  2. 2 2
      celery/bin/celeryctl.py
  3. 4 0
      celery/tests/test_backends/test_amqp.py

+ 1 - 1
celery/app/amqp.py

@@ -211,7 +211,7 @@ class TaskPublisher(messaging.Publisher):
         if countdown:                           # Convert countdown to ETA.
             now = now or datetime.utcnow()
             eta = now + timedelta(seconds=countdown)
-        if isinstance(expires, int):
+        if isinstance(expires, (int, float)):
             now = now or datetime.utcnow()
             expires = now + timedelta(seconds=expires)
         eta = eta and eta.isoformat()

+ 2 - 2
celery/bin/celeryctl.py

@@ -156,10 +156,10 @@ class apply(Command):
         if isinstance(kwargs, basestring):
             kwargs = deserialize(kwargs)
 
-        # Expires can be int.
+        # Expires can be float.
         expires = kw.get("expires") or None
         try:
-            expires = int(expires)
+            expires = float(expires)
         except (TypeError, ValueError):
             pass
 

+ 4 - 0
celery/tests/test_backends/test_amqp.py

@@ -89,6 +89,10 @@ class test_AMQPBackend(unittest.TestCase):
         b = self.create_backend(expires=48)
         self.assertEqual(b.queue_arguments.get("x-expires"), 48 * 1000.0)
 
+    def test_expires_is_float(self):
+        b = self.create_backend(expires=48.3)
+        self.assertEqual(b.queue_arguments.get("x-expires"), 48.3 * 1000.0)
+
     def test_expires_is_timedelta(self):
         b = self.create_backend(expires=timedelta(minutes=1))
         self.assertEqual(b.queue_arguments.get("x-expires"), 60 * 1000.0)