refactoring server structure
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import json
|
||||
from typing import Dict
|
||||
from flask import Flask
|
||||
import waitress
|
||||
|
||||
# Импорт классов и функций из других модулей
|
||||
from .transcriber import WhisperTranscriber
|
||||
from .routes import Routes
|
||||
from .logger import logger
|
||||
|
||||
class WhisperServiceAPI:
|
||||
"""Класс для API сервиса распознавания речи."""
|
||||
|
||||
def __init__(self, config_path: str):
|
||||
"""
|
||||
Инициализация API сервиса.
|
||||
|
||||
Args:
|
||||
config_path: Путь к конфигурационному файлу.
|
||||
"""
|
||||
# Загрузка конфигурации
|
||||
self.config = self._load_config(config_path)
|
||||
|
||||
# Порт для сервиса
|
||||
self.port = self.config["service_port"]
|
||||
|
||||
# Создание экземпляра транскрайбера
|
||||
self.transcriber = WhisperTranscriber(self.config)
|
||||
|
||||
# Создание Flask-приложения
|
||||
self.app = Flask("whisper-service")
|
||||
|
||||
# Регистрация маршрутов
|
||||
Routes(self.app, self.transcriber, self.config)
|
||||
# self._register_routes()
|
||||
|
||||
logger.info(f"API сервис инициализирован, порт: {self.port}")
|
||||
|
||||
def _load_config(self, config_path: str) -> Dict:
|
||||
"""
|
||||
Загрузка конфигурации из JSON-файла.
|
||||
|
||||
Args:
|
||||
config_path: Путь к файлу конфигурации.
|
||||
|
||||
Returns:
|
||||
Словарь с параметрами конфигурации.
|
||||
|
||||
Raises:
|
||||
FileNotFoundError: Если файл конфигурации не найден.
|
||||
json.JSONDecodeError: Если файл конфигурации содержит некорректный JSON.
|
||||
"""
|
||||
try:
|
||||
with open(config_path, "r", encoding="utf-8") as f:
|
||||
config = json.load(f)
|
||||
return config
|
||||
except FileNotFoundError as e:
|
||||
logger.error(f"Файл конфигурации не найден: {e}")
|
||||
raise
|
||||
except json.JSONDecodeError as e:
|
||||
logger.error(f"Ошибка при загрузке конфигурации: {e}")
|
||||
raise
|
||||
|
||||
def run(self):
|
||||
"""Запуск сервиса."""
|
||||
logger.info(f"Запуск сервиса на порту {self.port}")
|
||||
|
||||
# Использовать waitress для production-ready сервера
|
||||
waitress.serve(self.app, host='0.0.0.0', port=self.port)
|
||||
Reference in New Issue
Block a user