From 6cc1e65abbf48a5ba3a14abd1ea8bdbe6db1d873 Mon Sep 17 00:00:00 2001 From: Jegor Kitskerkin Date: Thu, 11 Aug 2022 15:03:41 +0200 Subject: [PATCH] Add support for async key_builder --- fastapi_cache/decorator.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) 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: