src/catedit/resources.py
changeset 123 1e1c8f98f3a8
parent 103 ef02353dff20
child 128 d300c7e3be20
--- a/src/catedit/resources.py	Wed Apr 15 10:30:48 2015 +0200
+++ b/src/catedit/resources.py	Wed Apr 15 14:56:07 2015 +0200
@@ -40,7 +40,9 @@
 
         # Cache key for category key registry for this repo
         registry_key = "categories_"+repository+"_keys"
-        if (cache.get(registry_key) is None or cache_key not in cache.get(registry_key)) and cache.get(cache_key) is None:
+        keys_set = cache.get(registry_key)
+        
+        if keys_set is None or (keys_set is not None and cache_key not in keys_set):
             rv = None
             cat_manager_instance = CategoryManager(
                 getattr(
@@ -65,15 +67,14 @@
                 rv = response, 200
             # Cache operations
             # Setting key for this function
-            cache.set(cache_key, rv, timeout=3600)
-            # Setting key in the registry
-            if cache.get(registry_key) is None:
-                cache.set(registry_key, [cache_key])
+            cache.set(cache_key, rv)
+            # Setting key in the registry, we get the key list again in case it was updated while running the function
+            keys_set = cache.get(registry_key)
+            if keys_set is None:
+                cache.set(registry_key, set([cache_key]))
             else:
-                if cache_key not in cache.get(registry_key):
-                    key_list = cache.get(registry_key)
-                    key_list.append(cache_key)
-                    cache.set(registry_key, key_list)
+                keys_set.add(cache_key)
+                cache.set(registry_key, keys_set)
             return rv
         else:
             return cache.get(cache_key)