Files
clickstream-ch-kafka-supers…/generator/generator.py
T
Dmitry Dementiev 642789d484 refactor(generator): разнесён сервис генератора по src-пакету
- Зачем:
  - перед активными визитами нужно отделить генеративную модель от Kafka, состояния и сервисного цикла.
- Что:
  - перенесены модули генератора в пакет `src/clickstream_generator`.
  - `generator.py` оставлен фасадом и точкой входа с совместимыми импортами.
  - обновлены Dockerfile, тесты, README, спека и issue 02.5.
- Проверка:
  - `docker build -t generator:test generator`.
  - `docker run --rm -v /home/dmitry/sources/clickstream-ch-kafka-superset-demo:/workspace -w /workspace/generator generator:test pytest tests/ -q`.
  - `python -m py_compile generator.py src/clickstream_generator/*.py` в Docker.
2026-06-11 15:00:50 +03:00

75 lines
2.0 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 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 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",
"GeneratorService",
"GeneratorState",
"KafkaBatchHistory",
"KafkaPublisher",
"KafkaStateManager",
"METRICS_ERRORS_TOTAL",
"METRICS_EVENTS_TOTAL",
"METRICS_LAST_SUCCESS",
"METRICS_TICK_DURATION",
"_import_kafka",
"_nested_list_to_tuple",
"_with_retry",
"calculate_events_count",
"ensure_topics",
"generate_tick_batch",
"hour_factor",
"main",
]
if __name__ == "__main__":
main()