- Зачем: - перед активными визитами нужно отделить генеративную модель от 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.
75 lines
2.0 KiB
Python
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()
|