Этот документ описывает, как часто и в каком порядке запускать скрипт воронок, а также общую стратегию расписания.
Основная рабочая задача:
-
app.mainОтвечает за:
- выборку новых кандидатов по тестам;
- добавление контактов в списки Brevo;
- запись входа в воронку в таблицу
funnel_entries; - синхронизацию покупок сертификатов с таблицами MODX.
Отчетная задача:
-
app.report_conversionsИспользуется для периодических отчетов по конверсии, запускать по необходимости вручную.
Рекомендуемая логика:
- Частота: каждые 10 - 30 минут, в зависимости от нагрузки и требований.
- При небольшом количестве тестов можно начать с запуска раз в час.
Причины:
- тесты и покупки не происходят каждую секунду;
- слишком частый запуск создает лишнюю нагрузку на базу;
- слишком редкий запуск ухудшает "свежесть" воронок и писем.
Перед тем как включать автоматический запуск:
-
Убедиться, что
.envнастроен. -
Запустить скрипт несколько раз вручную с
APP_DRY_RUN=true:python -m app.main -
Проверить логи в
logs/app.log. -
Изменить
APP_DRY_RUNнаfalse, когда поведение скрипта устраивает. -
Еще раз запустить вручную и убедиться, что:
-
контакты реально попадают в Brevo;
-
таблица
funnel_entriesзаполняется; -
ошибок в логах нет.
-
Только после этого имеет смысл включать автоматическое расписание.
Рабочий сервер может использовать собственный механизм расписаний:
- cron или аналогичная система на хостинге;
- панель управления хостинга с графическим планировщиком задач;
- отдельный оркестратор задач, если он уже используется.
Общие рекомендации для любой системы:
- командой запуска должна быть именно Python задача из корня проекта;
- перед запуском должен быть активирован виртуальный окружение проекта;
- логи работы должны записываться в файл для диагностики.
Конкретная реализация расписания зависит от инфраструктуры и может быть настроена администратором сервера.
Независимо от используемой системы, логика может быть такой:
-
Каждые 15 минут запускать основную задачу воронок.
- Если предыдущий запуск еще идет, новую копию задачи можно не стартовать.
- Важно избегать параллельных запусков, которые работают с одними и теми же таблицами.
-
Один раз в день (например, ночью) формировать отчет по конверсии вручную и смотреть динамику:
python -m app.report_conversions --from-date 2024-01-01
-
При необходимости менять частоту запуска, если:
- заметно растет нагрузка;
- меняется логика воронок;
- требуется ближе к реальному времени синхронизация.
После включения автоматического расписания стоит:
- периодически проверять
logs/app.log; - следить, появляются ли новые записи в
funnel_entries; - сравнивать количество новых тестов и количество новых записей в воронке.
Если что-то идет не так:
- временно отключить автоматический запуск;
- запускать задачу вручную и анализировать логи;
- вернуть расписание только после устранения причин ошибок.