This commit is contained in:
long2ice
2021-01-06 20:00:58 +08:00
parent 361a25857b
commit fec3c78291
2 changed files with 8 additions and 7 deletions

View File

@@ -26,7 +26,9 @@ def cache(
nonlocal coder nonlocal coder
nonlocal expire nonlocal expire
nonlocal key_builder nonlocal key_builder
request = kwargs.get("request") copy_kwargs = kwargs.copy()
request = copy_kwargs.pop("request", None)
response = copy_kwargs.pop("response", None)
if request and request.headers.get("Cache-Control") == "no-store": if request and request.headers.get("Cache-Control") == "no-store":
return await func(*args, **kwargs) return await func(*args, **kwargs)
@@ -34,10 +36,10 @@ def cache(
expire = expire or FastAPICache.get_expire() expire = expire or FastAPICache.get_expire()
key_builder = key_builder or FastAPICache.get_key_builder() key_builder = key_builder or FastAPICache.get_key_builder()
backend = FastAPICache.get_backend() backend = FastAPICache.get_backend()
copy_kwargs = kwargs.copy()
copy_kwargs.pop("request", None) cache_key = key_builder(
copy_kwargs.pop("response", None) func, namespace, request=request, response=response, args=args, kwargs=copy_kwargs
cache_key = key_builder(func, namespace, args=args, kwargs=copy_kwargs) )
ttl, ret = await backend.get_with_ttl(cache_key) ttl, ret = await backend.get_with_ttl(cache_key)
if not request: if not request:
if ret is not None: if ret is not None:
@@ -50,7 +52,6 @@ def cache(
return await func(request, *args, **kwargs) return await func(request, *args, **kwargs)
if_none_match = request.headers.get("if-none-match") if_none_match = request.headers.get("if-none-match")
if ret is not None: if ret is not None:
response = kwargs.get("response")
if response: if response:
response.headers["Cache-Control"] = f"max-age={ttl}" response.headers["Cache-Control"] = f"max-age={ttl}"
etag = f"W/{hash(ret)}" etag = f"W/{hash(ret)}"

View File

@@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "fastapi-cache2" name = "fastapi-cache2"
version = "0.1.3.3" version = "0.1.3.4"
description = "Cache for FastAPI" description = "Cache for FastAPI"
authors = ["long2ice <long2ice@gmail.com>"] authors = ["long2ice <long2ice@gmail.com>"]
license = "Apache-2.0" license = "Apache-2.0"