Optimise CacheDescriptor (#8594)

don't bother constricting a CacheContext unless we need one.
release-v1.21.3
Richard van der Hoff 2020-10-21 22:57:45 +01:00 committed by GitHub
parent 15d5553d9e
commit b28aaeb3a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 5 deletions

1
changelog.d/8594.misc Normal file
View File

@ -0,0 +1 @@
Minor optimisations in caching code.

View File

@ -201,14 +201,16 @@ class CacheDescriptor(_CacheDescriptorBase):
cache_key = get_cache_key(args, kwargs) cache_key = get_cache_key(args, kwargs)
# Add our own `cache_context` to argument list if the wrapped function
# has asked for one
if self.add_cache_context:
kwargs["cache_context"] = _CacheContext.get_instance(cache, cache_key)
try: try:
ret = cache.get(cache_key, callback=invalidate_callback) ret = cache.get(cache_key, callback=invalidate_callback)
except KeyError: except KeyError:
# Add our own `cache_context` to argument list if the wrapped function
# has asked for one
if self.add_cache_context:
kwargs["cache_context"] = _CacheContext.get_instance(
cache, cache_key
)
ret = defer.maybeDeferred(preserve_fn(self.orig), obj, *args, **kwargs) ret = defer.maybeDeferred(preserve_fn(self.orig), obj, *args, **kwargs)
ret = cache.set(cache_key, ret, callback=invalidate_callback) ret = cache.set(cache_key, ret, callback=invalidate_callback)