Simplify key_builder calling

The keybuilder is either returning a string, or a coroutine or other
awaitable. If the latter, await on the return value to get the string.
This commit is contained in:
Martijn Pieters
2023-04-27 16:29:10 +01:00
parent 255f40117b
commit a52f6b1406

View File

@@ -116,24 +116,17 @@ def cache(
key_builder = key_builder or FastAPICache.get_key_builder()
backend = FastAPICache.get_backend()
if inspect.iscoroutinefunction(key_builder):
cache_key = await key_builder(
func,
namespace,
request=request,
response=response,
args=args,
kwargs=copy_kwargs,
)
else:
cache_key = key_builder(
func,
namespace,
request=request,
response=response,
args=args,
kwargs=copy_kwargs,
)
cache_key = key_builder(
func,
namespace,
request=request,
response=response,
args=args,
kwargs=copy_kwargs,
)
if inspect.isawaitable(cache_key):
cache_key = await cache_key
try:
ttl, ret = await backend.get_with_ttl(cache_key)
except Exception: