Http Cache#

Collect metrics based on prometheus.

class blacksmith.domain.model.middleware.http_cache.AbstractCachePolicy#

Define the Cache Policy

abstract handle_request(req: blacksmith.domain.model.http.HTTPRequest, client_name: str, path: str) bool#

A function to decide if the http request is cachable.

abstract get_vary_key(client_name: str, path: str, request: blacksmith.domain.model.http.HTTPRequest) str#

Create a caching key for the vary part.

abstract get_response_cache_key(client_name: str, path: str, req: blacksmith.domain.model.http.HTTPRequest, vary: List[str]) str#

Create a caching key for the http response.

abstract get_cache_info_for_response(client_name: str, path: str, req: blacksmith.domain.model.http.HTTPRequest, resp: blacksmith.domain.model.http.HTTPResponse) Tuple[int, str, List[str]]#

Return caching info. Tuple (ttl in seconds, vary key, vary list).

class blacksmith.domain.model.middleware.http_cache.AbstractSerializer#
abstract static loads(s: str) Any#

Load a string to an object

abstract static dumps(obj: Any) str#

Get a value from redis

class blacksmith.domain.model.middleware.http_cache.JsonSerializer#
static loads(s: str) Any#

Load a string to an object

static dumps(obj: Any) str#

Get a value from redis

blacksmith.domain.model.middleware.http_cache.int_or_0(val: str) int#
blacksmith.domain.model.middleware.http_cache.get_max_age(response: blacksmith.domain.model.http.HTTPResponse) int#
blacksmith.domain.model.middleware.http_cache.get_vary_header_split(response: blacksmith.domain.model.http.HTTPResponse) List[str]#
class blacksmith.domain.model.middleware.http_cache.CacheControlPolicy(sep: str = '$')#

Initialize the caching using Cache-Control http headers. Also consume the Vary response header to cache response per Vary response headers per request.

Parameters

sep – Separator used in cache key MUST NOT BE USED in client name.

handle_request(req: blacksmith.domain.model.http.HTTPRequest, client_name: str, path: str) bool#

A function to decide if the http request is cachable.

get_vary_key(client_name: str, path: str, request: blacksmith.domain.model.http.HTTPRequest) str#

Create a caching key for the vary part.

get_response_cache_key(client_name: str, path: str, req: blacksmith.domain.model.http.HTTPRequest, vary: List[str]) str#

Create a caching key for the http response.

get_cache_info_for_response(client_name: str, path: str, req: blacksmith.domain.model.http.HTTPRequest, resp: blacksmith.domain.model.http.HTTPResponse) Tuple[int, str, List[str]]#

Return caching info. Tuple (ttl in seconds, vary key, vary list).