Files
clickstream-ch-kafka-supers…/generator/generator.py
T
Dmitry Dementiev 8f1e997cc9 feat(generator): откалиброван поток steady-stream генератора
- Зачем:
  - поток генератора должен соответствовать модели интенсивности и профилю сида перед реализацией состояния версии 2.
- Что:
  - событийный бюджет тика переведён в рождения визитов через ожидаемую среднюю длину визита.
  - дефолты интенсивности и обычный docker-compose запуск синхронизированы с целевыми 30 событиями в минуту.
  - добавлены статистические проверки длины визита, воронки, новых пользователей, межсессионных пауз и долгого окна потока.
  - обновлены README, OPERATIONS и карточка задачи 05.
- Проверка:
  - uv run --with-requirements generator/requirements.txt pytest generator/tests -q.
  - git diff --check.
2026-06-11 17:17:34 +03:00

77 lines
2.1 KiB
Python

#!/usr/bin/env python3
"""
Совместимый фасад и точка входа генератора.
Основной код разнесён по модулям рядом с этим файлом. Старые импорты вида
`from generator import Config` сохраняются для тестов и внешних запусков.
"""
import logging
import sys
from pathlib import Path
SRC_DIR = Path(__file__).resolve().parent / "src"
if str(SRC_DIR) not in sys.path:
sys.path.insert(0, str(SRC_DIR))
from clickstream_generator.config import Config
from clickstream_generator.dictionary import EventDictionary
from clickstream_generator.generation import EXPECTED_VISIT_EVENTS, EventGenerator
from clickstream_generator.intensity import calculate_events_count, hour_factor
from clickstream_generator.kafka_io import (
BatchRecord,
KafkaBatchHistory,
KafkaPublisher,
KafkaStateManager,
_import_kafka,
_with_retry,
ensure_topics,
)
from clickstream_generator.metrics import (
METRICS_ERRORS_TOTAL,
METRICS_EVENTS_TOTAL,
METRICS_LAST_SUCCESS,
METRICS_TICK_DURATION,
)
from clickstream_generator.runtime import TickStreamGenerator, generate_tick_batch
from clickstream_generator.service import GeneratorService, main
from clickstream_generator.state import GeneratorState, _nested_list_to_tuple
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
__all__ = [
"BatchRecord",
"Config",
"EventDictionary",
"EventGenerator",
"EXPECTED_VISIT_EVENTS",
"GeneratorService",
"GeneratorState",
"KafkaBatchHistory",
"KafkaPublisher",
"KafkaStateManager",
"METRICS_ERRORS_TOTAL",
"METRICS_EVENTS_TOTAL",
"METRICS_LAST_SUCCESS",
"METRICS_TICK_DURATION",
"TickStreamGenerator",
"_import_kafka",
"_nested_list_to_tuple",
"_with_retry",
"calculate_events_count",
"ensure_topics",
"generate_tick_batch",
"hour_factor",
"main",
]
if __name__ == "__main__":
main()