2021-03-20 14:42:29 +08:00
|
|
|
import hashlib
|
2023-05-09 15:30:46 +01:00
|
|
|
from typing import Any, Callable, Dict, Optional, Tuple
|
2020-10-16 16:55:33 +08:00
|
|
|
|
|
|
|
|
from starlette.requests import Request
|
|
|
|
|
from starlette.responses import Response
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def default_key_builder(
|
2023-04-27 16:31:42 +01:00
|
|
|
func: Callable[..., Any],
|
2023-04-27 16:11:59 +01:00
|
|
|
namespace: str = "",
|
2021-01-06 10:34:30 +08:00
|
|
|
request: Optional[Request] = None,
|
|
|
|
|
response: Optional[Response] = None,
|
2023-05-09 15:30:46 +01:00
|
|
|
args: Optional[Tuple[Any, ...]] = None,
|
|
|
|
|
kwargs: Optional[Dict[str, Any]] = None,
|
2022-10-22 20:59:37 +04:00
|
|
|
) -> str:
|
2023-05-10 17:46:48 +01:00
|
|
|
cache_key = hashlib.md5( # nosec:B303
|
|
|
|
|
f"{func.__module__}:{func.__name__}:{args}:{kwargs}".encode()
|
|
|
|
|
).hexdigest()
|
|
|
|
|
return f"{namespace}:{cache_key}"
|