Flask-Cache记住TTL不适用于每个记录TTL,仅功能调用TTL

时间:2020-05-20 03:15:59

标签: python flask flask-cache

我正在使用flask-cache memoize来缓存函数的结果,而我认为将要发生的事情是,它将在函数返回的记录上设置TTL(确实如此),但是,似乎在调用该函数时将TTL设置为on。因此,当我从同一函数缓存第二个结果时,该第二个结果的TTL似乎被设置为第一个结果。就像TTL对于函数调用是全局的。

@cache.memoize(60)
def fetch_user(username):
    return User.query.filter_by(username = username).first()

例如:

  1. 我调用fetch_user(user1)并在我的缓存中获取一条user1记录,并在我的缓存中获取该函数的记录。
  2. 我第一次调用fetch_user(user2)后30秒,在我的缓存中获得了user2记录(这是预期的结果)
  3. 我等待user1 TTL过期,然后为第二个用户第三次调用fetch_user(user2)
  4. 即使第二位用户的TTL永不过期,功能记录的TTL过期,也为第二位用户创建了一条全新的记录。

那么我将如何基于函数的结果使用唯一的TTL缓存函数的结果?

0 个答案:

没有答案