error fix
This commit is contained in:
@@ -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
|
||||
# </IMPORTS>
|
||||
@@ -56,41 +57,34 @@ class AppOrchestrator:
|
||||
)
|
||||
# </DEPENDENCY>
|
||||
|
||||
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
|
||||
# </HELPER>
|
||||
with self._error_context("setup"):
|
||||
# <CORE_LOGIC>
|
||||
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)
|
||||
|
||||
# <DEPENDENCY name="setup_logging" />
|
||||
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}")
|
||||
# </CORE_LOGIC>
|
||||
# </ACTION>
|
||||
|
||||
# <CONTRACT for="_log_error_details">
|
||||
# description: "Логирует расширенную информацию об ошибке для упрощения диагностики."
|
||||
|
||||
Reference in New Issue
Block a user