error fix

This commit is contained in:
2025-07-20 09:38:10 +03:00
parent 5742d474fd
commit c59dff3397

View File

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