From a52f6b14067a9c3c41daa9445dc08c351aa606c2 Mon Sep 17 00:00:00 2001 From: Martijn Pieters Date: Thu, 27 Apr 2023 16:29:10 +0100 Subject: [PATCH] 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. --- fastapi_cache/decorator.py | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/fastapi_cache/decorator.py b/fastapi_cache/decorator.py index 091da3f..625b69c 100644 --- a/fastapi_cache/decorator.py +++ b/fastapi_cache/decorator.py @@ -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: