diff --git a/src/orchestrator.py b/src/orchestrator.py
index 908c4b4..28c6e14 100644
--- a/src/orchestrator.py
+++ b/src/orchestrator.py
@@ -20,6 +20,7 @@ from core.database import DatabaseManager, init_database, save_data_to_db
from core.rabbitmq import RabbitMQExporter
from scraper.engine import Scraper
from utils.exporters import save_data_to_csv
+from core.logging_config import setup_logging
from datetime import datetime
import sqlite3
#
@@ -56,41 +57,34 @@ class AppOrchestrator:
)
#
- self.run_id = datetime.now().strftime("%Y%m%d-%H%M%S")
self.logger = logging.getLogger(self.__class__.__name__)
- self.db_manager: Optional[DatabaseManager] = None
- self.rabbitmq_exporter: Optional[RabbitMQExporter] = None
- self.scraper = Scraper(
- selectors=self.settings.selectors,
- base_url=self.settings.base_url
- )
self._setup()
- def _register_run(self):
- """Регистрирует текущий запуск в базе данных."""
- if not self.db_manager:
- return
- try:
- with self.db_manager as conn:
- conn.execute(
- "INSERT INTO parsing_runs (run_id, start_time) VALUES (?, ?)",
- (self.run_id, datetime.now())
- )
- conn.commit()
- self.logger.info(f"Запуск {self.run_id} зарегистрирован в БД.")
- except sqlite3.Error as e:
- self.logger.error(f"Не удалось зарегистрировать запуск {self.run_id} в БД: {e}")
- raise
-
- def _setup(self):
- """Контекстный менеджер для обработки ошибок с детальной диагностикой."""
- try:
- yield
- except Exception as e:
- self.logger.error(f"[{operation.upper()}] Ошибка в операции '{operation}': {e}", exc_info=True)
- self._log_error_details(operation, e)
- raise
- #
+
+ with self._error_context("setup"):
+ #
+ self.stats['start_time'] = datetime.now()
+ self.logger.info(f"[ACTION:_setup] Запуск инициализации систем. Run ID: {self.run_id}")
+
+ if self.settings.save_to_db or self.settings.log_to_db:
+ self.settings.output_dir.mkdir(parents=True, exist_ok=True)
+ self.db_manager = DatabaseManager(self.settings.db_path)
+ init_database(self.db_manager.db_path, self.run_id)
+
+ #
+ setup_logging(self.run_id, self.db_manager)
+
+ if ENABLE_RABBITMQ_EXPORT:
+ self.rabbitmq_exporter = RabbitMQExporter()
+ if self.rabbitmq_exporter.connection.connect():
+ self.logger.info("[ACTION:_setup] Подключение к RabbitMQ доступно")
+ else:
+ self.logger.warning("[ACTION:_setup] Подключение к RabbitMQ недоступно, экспорт будет пропущен")
+ self.rabbitmq_exporter = None
+
+ self.logger.info(f"[ACTION:_setup] Оркестратор запущен. Архитектура v2.0. Run ID: {self.run_id}")
+ #
+ #
#
# description: "Логирует расширенную информацию об ошибке для упрощения диагностики."