#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
Возможно ли это? Стоит того? Или я ищу ненужные оптимизации?