Skip to content

Latest commit

 

History

History
117 lines (67 loc) · 5.46 KB

File metadata and controls

117 lines (67 loc) · 5.46 KB

Testizer email funnels · Scheduling guide

Этот документ описывает, как часто и в каком порядке запускать скрипт воронок, а также общую стратегию расписания.

1. Какие задачи нужно запускать

Основная рабочая задача:

  • app.main

    Отвечает за:

    • выборку новых кандидатов по тестам;
    • добавление контактов в списки Brevo;
    • запись входа в воронку в таблицу funnel_entries;
    • синхронизацию покупок сертификатов с таблицами MODX.

Отчетная задача:

  • app.report_conversions

    Используется для периодических отчетов по конверсии, запускать по необходимости вручную.

2. Частота запуска основной задачи

Рекомендуемая логика:

  • Частота: каждые 10 - 30 минут, в зависимости от нагрузки и требований.
  • При небольшом количестве тестов можно начать с запуска раз в час.

Причины:

  • тесты и покупки не происходят каждую секунду;
  • слишком частый запуск создает лишнюю нагрузку на базу;
  • слишком редкий запуск ухудшает "свежесть" воронок и писем.

3. Последовательность действий перед переходом в расписание

Перед тем как включать автоматический запуск:

  1. Убедиться, что .env настроен.

  2. Запустить скрипт несколько раз вручную с APP_DRY_RUN=true:

    python -m app.main
    
  3. Проверить логи в logs/app.log.

  4. Изменить APP_DRY_RUN на false, когда поведение скрипта устраивает.

  5. Еще раз запустить вручную и убедиться, что:

    • контакты реально попадают в Brevo;

    • таблица funnel_entries заполняется;

    • ошибок в логах нет.

Только после этого имеет смысл включать автоматическое расписание.

4. Настройка расписания на сервере

Рабочий сервер может использовать собственный механизм расписаний:

  • cron или аналогичная система на хостинге;
  • панель управления хостинга с графическим планировщиком задач;
  • отдельный оркестратор задач, если он уже используется.

Общие рекомендации для любой системы:

  • командой запуска должна быть именно Python задача из корня проекта;
  • перед запуском должен быть активирован виртуальный окружение проекта;
  • логи работы должны записываться в файл для диагностики.

Конкретная реализация расписания зависит от инфраструктуры и может быть настроена администратором сервера.

5. Пример логики расписания

Независимо от используемой системы, логика может быть такой:

  1. Каждые 15 минут запускать основную задачу воронок.

    • Если предыдущий запуск еще идет, новую копию задачи можно не стартовать.
    • Важно избегать параллельных запусков, которые работают с одними и теми же таблицами.
  2. Один раз в день (например, ночью) формировать отчет по конверсии вручную и смотреть динамику:

    python -m app.report_conversions --from-date 2024-01-01
    
  3. При необходимости менять частоту запуска, если:

    • заметно растет нагрузка;
    • меняется логика воронок;
    • требуется ближе к реальному времени синхронизация.

6. Контроль и отладка расписания

После включения автоматического расписания стоит:

  • периодически проверять logs/app.log;
  • следить, появляются ли новые записи в funnel_entries;
  • сравнивать количество новых тестов и количество новых записей в воронке.

Если что-то идет не так:

  • временно отключить автоматический запуск;
  • запускать задачу вручную и анализировать логи;
  • вернуть расписание только после устранения причин ошибок.