Кэш: по интервалу таблица перечитывается всегда
Поле modified у публичной ссылки Яндекса может «застыть» (кэш на стороне Диска), и проверка «modified не изменился → не скачиваем» держала старые данные до неопределённого момента: стенд показывал прежнее расписание, хотя в таблице правки уже были. Теперь на каждое обновление (и по интервалу, и по кнопке) таблица скачивается заново; modified только показывается в админке. Плюс к этому: - при старте пишем в лог предупреждение, если ссылка в настройках отличается от SCHEDULE_LINK из окружения (именно так терялось время в прошлый раз: на стенде в настройках была сохранена другая ссылка); - на странице админки у поля ссылки пояснение, что значение хранится в настройках стенда и имеет приоритет над .env.
This commit is contained in:
@@ -99,8 +99,8 @@ nginx (https://schedule.our-place.ru) → 127.0.0.1:8090
|
||||
ошибка, число групп);
|
||||
- **вставить новую ссылку**: она проверяется скачиванием и разбором таблицы
|
||||
до сохранения — нерабочая не применится, данные на сайте не пострадают;
|
||||
- **принудительно обновить расписание** — вне интервала и без проверки
|
||||
«таблица не менялась» (то же, что делает фоновое обновление, но сейчас);
|
||||
- **принудительно обновить расписание** — вне интервала, не дожидаясь
|
||||
фонового обновления (интервал и так перечитывает таблицу целиком);
|
||||
- **задать интервал обновления** в минутах (`1…1440`).
|
||||
|
||||
Как это устроено:
|
||||
@@ -128,7 +128,7 @@ src/
|
||||
source.py загрузка файла по публичной ссылке Я.Диска
|
||||
lessons.py разбор ячеек занятий (общий конвейер ролей)
|
||||
parsing.py листы → расписание, недели, индексы преподавателей/аудиторий
|
||||
cache.py ScheduleCache: блокировка, интервал, modified, stale-while-error
|
||||
cache.py ScheduleCache: блокировка, интервал, stale-while-error
|
||||
settings.py хранилище настроек админки (ссылка, интервал) в JSON-файле
|
||||
errors.py ScheduleError
|
||||
frontend/
|
||||
@@ -152,7 +152,7 @@ tests/
|
||||
test_lessons.py все форматы ячеек
|
||||
test_xlsx.py чтение книги
|
||||
test_parsing.py разбор листов, недели, индексы
|
||||
test_api.py API и поведение кэша (TTL/modified/stale, 404/400/502)
|
||||
test_api.py API и поведение кэша (интервал/stale, 404/400/502)
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
Reference in New Issue
Block a user