diff --git a/fastapi_cache/decorator.py b/fastapi_cache/decorator.py index ed1a30c..98e20ae 100644 --- a/fastapi_cache/decorator.py +++ b/fastapi_cache/decorator.py @@ -47,9 +47,25 @@ def cache( key_builder = key_builder or FastAPICache.get_key_builder() backend = FastAPICache.get_backend() - cache_key = key_builder( - func, namespace, request=request, response=response, args=args, kwargs=copy_kwargs - ) + 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 + ) + ttl, ret = await backend.get_with_ttl(cache_key) if not request: if ret is not None: