Ver código fonte

Fixed #16533 -- Stopped the memcache cache backend from raising an exception if the timeout value isn't an integer. Thanks, Jeff Balogh.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16556 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Jannis Leidel 13 anos atrás
pai
commit
db594f90ba

+ 1 - 1
django/core/cache/backends/memcached.py

@@ -46,7 +46,7 @@ class BaseMemcachedCache(BaseCache):
             #
             # This means that we have to switch to absolute timestamps.
             timeout += int(time.time())
-        return timeout
+        return int(timeout)
 
     def add(self, key, value, timeout=0, version=None):
         key = self.make_key(key, version=version)

+ 5 - 0
tests/regressiontests/cache/tests.py

@@ -408,6 +408,11 @@ class BaseCacheTests(object):
         self.assertEqual(self.cache.get('key3'), 'sausage')
         self.assertEqual(self.cache.get('key4'), 'lobster bisque')
 
+    def test_float_timeout(self):
+        # Make sure a timeout given as a float doesn't crash anything.
+        self.cache.set("key1", "spam", 100.2)
+        self.assertEqual(self.cache.get("key1"), "spam")
+
     def perform_cull_test(self, initial_count, final_count):
         """This is implemented as a utility method, because only some of the backends
         implement culling. The culling algorithm also varies slightly, so the final