0

我正在使用 Python 的 DiskCache 和 memoize 装饰器来缓存对静态数据数据库的函数调用。


from diskcache import Cache
cache = Cache("database_cache)

@cache.memoize()
def fetch_document(row_id: int, user: str, password: str):
    ...

我不希望用户和密码成为缓存键的一部分。

如何从密钥生成中排除参数?

4

1 回答 1

2

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

于 2021-05-07T20:19:16.333 回答