""" Web Server Service - сервис для запуска веб-сервера """ import logging import threading from typing import Optional logger = logging.getLogger(__name__) class WebServerService: """Сервис для управления веб-сервером""" def __init__(self, host: str = "0.0.0.0", port: int = 8000): self.host = host self.port = port self.server = None self.thread: Optional[threading.Thread] = None self.is_running = False def start(self): """Запустить веб-сервер в отдельном потоке""" if self.is_running: logger.warning("Веб-сервер уже запущен") return try: import uvicorn from web.app import app def run_server(): uvicorn.run(app, host=self.host, port=self.port, log_level="info") self.thread = threading.Thread(target=run_server, daemon=True) self.thread.start() self.is_running = True logger.info(f"✅ Веб-сервер запущен на http://{self.host}:{self.port}") logger.info(f" Логин: admin") logger.info(f" Пароль: {self.port} (ID админа)") except Exception as e: logger.error(f"Ошибка запуска веб-сервера: {e}") self.is_running = False def stop(self): """Остановить веб-сервер""" if not self.is_running: return try: self.is_running = False logger.info("🛑 Веб-сервер остановлен") except Exception as e: logger.error(f"Ошибка остановки веб-сервера: {e}") def get_url(self) -> str: """Получить URL веб-интерфейса""" return f"http://{self.host}:{self.port}"