我正在使用 Python 的 DiskCache 和 memoize 装饰器来缓存对静态数据数据库的函数调用。
from diskcache import Cache
cache = Cache("database_cache)
@cache.memoize()
def fetch_document(row_id: int, user: str, password: str):
...
我不希望用户和密码成为缓存键的一部分。
如何从密钥生成中排除参数?
memoize的文档没有显示排除参数的选项。
您可以尝试使用源代码编写自己的装饰器。
或者cache
在你自己的内部使用fetch_document
- 像这样的东西
def fetch_document(row_id: int, user: str, password: str):
if row_id in cache:
return cache[row_id]
# ... code ...
# result = ...
cache[row_id] = result
return result
编辑:
或创建函数的缓存版本 - 像这样
def cached_fetch_document(row_id: int, user: str, password: str):
if row_id in cache:
return cache[row_id]
result = fetch_document(row_id: int, user: str, password: str)
cache[row_id] = result
return result
稍后您可以决定是否要cached_fetch_document
使用fetch_document