Кэш: по интервалу таблица перечитывается всегда

Поле modified у публичной ссылки Яндекса может «застыть» (кэш на стороне
Диска), и проверка «modified не изменился → не скачиваем» держала старые
данные до неопределённого момента: стенд показывал прежнее расписание, хотя
в таблице правки уже были. Теперь на каждое обновление (и по интервалу, и по
кнопке) таблица скачивается заново; modified только показывается в админке.

Плюс к этому:
- при старте пишем в лог предупреждение, если ссылка в настройках отличается
  от SCHEDULE_LINK из окружения (именно так терялось время в прошлый раз:
  на стенде в настройках была сохранена другая ссылка);
- на странице админки у поля ссылки пояснение, что значение хранится в
  настройках стенда и имеет приоритет над .env.
This commit is contained in:
2026-09-29 13:50:17 +03:00
parent ab92fb44e1
commit d4b47c30bf
5 changed files with 27 additions and 19 deletions

View File

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