Как заменить (вместо полного пересчета) записанные результаты в кэше колб

#python #flask #flask-cache

Вопрос:

Допустим, я хочу, чтобы пользователи выполняли действие каждый день, поэтому я отслеживаю current_streak и longest_streak .

 current_streak = get_current_streak(user_id)
longest_streak = get_longest_streak(user_id)

 

Вместо того, чтобы пересчитывать longest_streak каждый раз, когда пользователь запрашивает его, я кэширую его на неопределенный срок и пересчитываю только тогда, когда вижу, что current_streak это превышает longest_streak

 @cache.memoize(timeout=99999)
def _get_longest_streak(user_id: int) -> int:
    pass

def get_longest_streak(user_id: int) -> int:
    current_streak = get_current_streak(user_id)
    longest_streak = _get_longest_streak(user_id)

    if current_streak > longest_streak:
        cache.delete_memoized(_get_longest_streak, user_id)
        return _get_longest_streak(user_id)
    
    return longest_streak

 

Но, похоже, я мог бы сделать это более эффективно с помощью чего-то подобного:

 def get_longest_streak(user_id: int) -> int:
    current_streak = get_current_streak(user_id)
    longest_streak = _get_longest_streak(user_id)

    if current_streak > longest_streak:
        cache.replace_memoized(_get_longest_streak, user_id, current_streak) # <--
        return _get_longest_streak(user_id)
    
    return longest_streak

 

Возможно ли это? Стоит того? Или я ищу ненужные оптимизации?