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 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):
|
|
||||||
"""Регистрирует текущий запуск в базе данных."""
|
|
||||||
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):
|
with self._error_context("setup"):
|
||||||
"""Контекстный менеджер для обработки ошибок с детальной диагностикой."""
|
# <CORE_LOGIC>
|
||||||
try:
|
self.stats['start_time'] = datetime.now()
|
||||||
yield
|
self.logger.info(f"[ACTION:_setup] Запуск инициализации систем. Run ID: {self.run_id}")
|
||||||
except Exception as e:
|
|
||||||
self.logger.error(f"[{operation.upper()}] Ошибка в операции '{operation}': {e}", exc_info=True)
|
if self.settings.save_to_db or self.settings.log_to_db:
|
||||||
self._log_error_details(operation, e)
|
self.settings.output_dir.mkdir(parents=True, exist_ok=True)
|
||||||
raise
|
self.db_manager = DatabaseManager(self.settings.db_path)
|
||||||
# </HELPER>
|
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">
|
# <CONTRACT for="_log_error_details">
|
||||||
# description: "Логирует расширенную информацию об ошибке для упрощения диагностики."
|
# description: "Логирует расширенную информацию об ошибке для упрощения диагностики."
|
||||||
|
|||||||
Reference in New Issue
Block a user