cache.py
1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# cache_patch.py
import hashlib
from datetime import datetime
from starlette_caches.utils import cache as scache
from aiocache import Cache
REDIS_CONN = open('./docs/redis').read().strip()
REDIS_PASS, REDIS_CONN = REDIS_CONN.split('@')
REDIS_CONN = REDIS_CONN.split(':')
cache = Cache(
Cache.REDIS,
endpoint=REDIS_CONN[0],
port=REDIS_CONN[1],
password=REDIS_PASS.strip(' :'),
namespace='httpcache',
)
# cache = Cache()
def patched_generate_cache_key(url, method, headers, varying_headers, cache):
assert method in scache.CACHABLE_METHODS
# vary_ctx = hashlib.md5(usedforsecurity=False)
# for header in varying_headers:
# value = headers.get(header)
# if value is not None:
# vary_ctx.update(value.encode())
#
# vary_hash = vary_ctx.hexdigest()
url_hash = hashlib.md5(
str(url).encode("ascii"), usedforsecurity=False
).hexdigest()
now = datetime.now()
dataset_version = now.strftime('%Y%m%d')
return f"cache_presupuestov1.{dataset_version}.{method}.{url_hash}"
scache.generate_cache_key = patched_generate_cache_key