Add support for async key_builder

This commit is contained in:
Jegor Kitskerkin
2022-08-11 15:03:41 +02:00
parent 820689ce9a
commit 6cc1e65abb

View File

@@ -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: