Поправка по кэшу: по интервалу снова сверяем modified, всегда качает только кнопка

Как и просили: фоновое обновление по интервалу сначала смотрит на дату
изменения файла и, если таблица не менялась, не скачивает её. Всегда
перечитывать таблицу — только принудительное обновление из админки
(force_reload, кнопка «Обновить сейчас»).

Тесты: по интервалу — без скачивания при неизменном modified; кнопка —
скачивает независимо от modified (test_force_refresh_ignores_ttl_and_modified).
This commit is contained in:
2026-10-06 15:01:07 +03:00
parent 475eb3801e
commit a4798c4a36
3 changed files with 30 additions and 19 deletions

View File

@@ -170,16 +170,16 @@ def test_cache_no_repeated_download(client, cache):
assert cache.calls["download"] == 1
def test_interval_refresh_always_downloads(cache):
"""По интервалу таблица перечитывается всегда.
def test_modified_unchanged_no_download(cache):
"""По интервалу сверяем modified: если таблица не менялась — не скачиваем.
Поле modified у публичной ссылки может «застыть», поэтому на него не
опираемся: иначе стенд показывал бы старые данные бесконечно.
Принудительное обновление из админки при этом качает файл всегда
(см. test_force_refresh_ignores_ttl_and_modified).
"""
cache._ttl = 0
cache.get()
cache.get()
assert cache.calls["download"] == 2 # оба обновления по интервалу скачали таблицу
assert cache.calls["download"] == 1
assert cache.calls["modified"] >= 2