/
Anna_brv
/
ASR-Service
Обзор
Документация
Войти
/
Anna_brv
/
ASR-Service
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/app.py
65 строк
2 KB
Anna
first_commit
30 апр 2026, 21:52
30 апр 2026, 21:52
283885c
Код
Авторство
О чём код?
import multiprocessing as mp # Убедитесь, что эта строка находится в самом начале mp.set_start_method("spawn", force=True) from contextlib import asynccontextmanager from fastapi import FastAPI, Request from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse from loguru import logger from slowapi.errors import RateLimitExceeded from slowapi.middleware import SlowAPIMiddleware from .config import settings from .rate_limit import limiter from .routers import transcription, tasks, models, health @asynccontextmanager async def lifespan(app: FastAPI): logger.info("Starting ASR Service v1.0.0") logger.info(f"Redis: {settings.redis_url}") logger.info(f"Model: {settings.default_model}") settings.temp_dir.mkdir(parents=True, exist_ok=True) yield logger.info("Shutting down ASR Service") app = FastAPI( title="ASR Service", description="Сервис асинхронной транскрибации аудио/видео на базе FastAPI + RQ + Redis", version="1.0.0", lifespan=lifespan, docs_url="/docs", redoc_url="/redoc", openapi_url="/openapi.json" ) app.state.limiter = limiter app.add_middleware(SlowAPIMiddleware) @app.exception_handler(RateLimitExceeded) async def rate_limit_handler(request: Request, exc: RateLimitExceeded): return JSONResponse(status_code=429, content={"detail": "Rate limit exceeded"}) @app.exception_handler(Exception) async def global_exception_handler(request: Request, exc: Exception): logger.exception(f"Unhandled exception: {exc}") return JSONResponse(status_code=500, content={"detail": "Internal server error"}) app.add_middleware( CORSMiddleware, allow_origins=settings.allowed_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(transcription.router, prefix="/api/v1/transcribe", tags=["Транскрибация"]) app.include_router(tasks.router, prefix="/api/v1/tasks", tags=["Управление задачами"]) app.include_router(models.router, prefix="/api/v1/models", tags=["Управление моделями"]) app.include_router(health.router, prefix="/api/v1", tags=["Здоровье"])