ソースを参照

Redis result: Use atomic SETEX. Closes #606. Thanks to yaniv-aknin

Ask Solem 13 年 前
コミット
8c2ade9826
2 ファイル変更7 行追加2 行削除
  1. 3 2
      celery/backends/redis.py
  2. 4 0
      celery/tests/test_backends/test_redis_unit.py

+ 3 - 2
celery/backends/redis.py

@@ -71,9 +71,10 @@ class RedisBackend(KeyValueStoreBackend):
 
     def set(self, key, value):
         client = self.client
-        client.set(key, value)
         if self.expires is not None:
-            client.expire(key, self.expires)
+            client.setex(key, value, self.expires)
+        else:
+            client.set(key, value)
         client.publish(key, value)
 
     def delete(self, key):

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

@@ -35,6 +35,10 @@ class Redis(object):
     def get(self, key):
         return self.keyspace.get(key)
 
+    def setex(self, key, value, expires):
+        self.set(key, value)
+        self.expire(key, expires)
+
     def set(self, key, value):
         self.keyspace[key] = value