--- 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)