Оба места утверждали, что у Домклика один выделенный резидентный прокси и пула нет. Это перестало быть правдой ещё в #2800 (миграция 253 сняла резервацию узла), но текст остался — и именно на него опирался тикет #3189, поставленный под «калибровку» ограничения, которого не существует. Свип к тому же ходит через пул давно (serp.py:359), а бэкфилл подключён к нему в PR #3222. Заодно докстринг называл не тот ограничитель: свип кладёт не счётчик провалов lease, а break по первому DomClickBlockedError (#2854) — до ротации дело не доходит ни при каком счётчике, отсюда buckets_completed=0. Только комментарии, поведение не меняется. Миграция 175 уже применена, а _schema_migrations трекает по имени файла без checksum — правка текста её не перезапустит.
46 lines
3.4 KiB
SQL
46 lines
3.4 KiB
SQL
-- Динамическая конфигурация Objective sync — single-row settings.
|
||
--
|
||
-- Зачем нужна:
|
||
-- 1. В админке /admin/scrape/objective можно менять параметры запроса
|
||
-- (groups, use_ddu/dkp, period_months_back, inter_group_delay) без редеплоя.
|
||
-- 2. Cron-расписание тоже хранится здесь — Celery beat читает его при старте.
|
||
-- Изменение требует restart beat-контейнера (это указано в UI как hint).
|
||
--
|
||
-- Pattern: single-row (id=1), UPSERT для безопасных обновлений.
|
||
-- Если строки нет — task/beat падают на settings.* env как fallback.
|
||
|
||
CREATE TABLE IF NOT EXISTS objective_sync_config (
|
||
id SMALLINT PRIMARY KEY DEFAULT 1 CHECK (id = 1),
|
||
-- Cron-расписание для Celery beat (5-полевой формат: 'minute hour dom month dow').
|
||
-- Celery beat перечитывает это поле только при старте — после изменения
|
||
-- нужен `docker compose restart beat`.
|
||
cron_schedule TEXT NOT NULL DEFAULT '0 6 * * tue',
|
||
-- Группы для sync (csv). Эмпирически проверены на тарифе:
|
||
-- 'Свердловская область', 'Челябинск', 'Тюмень', 'Пермь',
|
||
-- 'Екатеринбург', 'Верхняя Пышма', 'Берёзовский', 'Нижний Тагил',
|
||
-- 'Каменск-Уральский', 'Первоуральск', 'Новоуральск', 'Сысерть'.
|
||
groups_csv TEXT NOT NULL DEFAULT 'Свердловская область,Челябинск,Тюмень,Пермь',
|
||
-- Параметры запроса /v2/Report/GetReport.
|
||
use_ddu BOOLEAN NOT NULL DEFAULT TRUE,
|
||
use_dkp BOOLEAN NOT NULL DEFAULT TRUE,
|
||
-- Сколько месяцев назад тянуть для Сводных отчётов (corp_sum).
|
||
-- 1 = только последний полный месяц (default). 12 = весь год.
|
||
-- Поквартирные/Лоты не имеют дат — всегда snapshot.
|
||
period_months_back SMALLINT NOT NULL DEFAULT 1 CHECK (period_months_back BETWEEN 1 AND 24),
|
||
-- Пауза между группами в одном task'е (секунды). Защита от 429.
|
||
inter_group_delay_s SMALLINT NOT NULL DEFAULT 30 CHECK (inter_group_delay_s BETWEEN 0 AND 300),
|
||
-- Пауза между HTTP-запросами в client (мс). Передаётся в ObjectiveClient(rate_ms=…).
|
||
rate_ms SMALLINT NOT NULL DEFAULT 3000 CHECK (rate_ms BETWEEN 0 AND 10000),
|
||
-- Сколько ретраев на 429/5xx.
|
||
retries SMALLINT NOT NULL DEFAULT 2 CHECK (retries BETWEEN 0 AND 5),
|
||
updated_at timestamptz NOT NULL DEFAULT NOW(),
|
||
updated_by TEXT
|
||
);
|
||
|
||
COMMENT ON TABLE objective_sync_config IS
|
||
'Single-row динамическая конфигурация Objective sync. Все task-ы и beat '
|
||
'читают отсюда. Если строки нет — fallback на settings.* env.';
|
||
|
||
-- Засеваем единственную строку с дефолтами (если ещё не создана).
|
||
INSERT INTO objective_sync_config (id) VALUES (1)
|
||
ON CONFLICT (id) DO NOTHING;
|