/
tsps
/
case_loader
Обзор
Документация
Войти
/
tsps
/
case_loader
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
app/main.py
60 строк
2 KB
Василий Петров
Увеличение времени работы джобы
07 мар 2026, 21:28
07 мар 2026, 21:28
20750be
Код
Авторство
О чём код?
from fastapi import FastAPI, status from pydantic import BaseModel from app.core.queue import case_loader_queue from app.services.job_processor import process_document_import_job from sqlalchemy import text from app.core.config import config from app.core.db import engine app = FastAPI() class LoadDocumentsRequest(BaseModel): document_import_job_id: int @app.post("/load-documents", status_code=status.HTTP_202_ACCEPTED) async def load_documents(request: LoadDocumentsRequest): """ Принимает ID задачи и ставит её в очередь RQ для фоновой обработки. """ job_id = request.document_import_job_id case_loader_queue.enqueue(process_document_import_job, job_id, job_timeout='10m') return {"job_id": job_id} @app.get("/health", status_code=status.HTTP_200_OK) async def health_check(): """ Проверка доступности сервиса: БД, Redis и базовой конфигурации. """ result = {"status": "ok", "checks": {}} # Проверка PostgreSQL try: with engine.connect() as conn: conn.execute(text("SELECT 1")) result["checks"]["database"] = "connected" except Exception as e: result["status"] = "degraded" result["checks"]["database"] = f"error: {str(e)}" # Проверка Redis try: from redis import Redis redis_client = Redis.from_url(config.REDIS_URL) redis_client.ping() result["checks"]["redis"] = "connected" except Exception as e: result["status"] = "degraded" if result["status"] == "ok" else result["status"] result["checks"]["redis"] = f"error: {str(e)}" # Конфигурация (без чувствительных данных) result["config"] = { "storage_type": config.STORAGE_TYPE, "caselook_login": config.CASELOOK_LOGIN, "redis_url": config.REDIS_URL, } http_code = status.HTTP_200_OK if result["status"] == "ok" else status.HTTP_503_SERVICE_UNAVAILABLE return result, http_code