senatus-dev / app.py
dzenzzz's picture
adds config file
df02cd1
raw
history blame
1.07 kB
import asyncio
import time
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
from starlette.status import HTTP_504_GATEWAY_TIMEOUT
from neural_searcher import NeuralSearcher
from huggingface_hub import login
from config import HUGGING_FACE_API_KEY,COLLECTION_NAME
import os
login(HUGGING_FACE_API_KEY)
app = FastAPI()
neural_searcher = NeuralSearcher(collection_name=COLLECTION_NAME)
REQUEST_TIMEOUT_ERROR = 30
@app.get("/api/search")
async def search(q: str):
data = await neural_searcher.search(text=q)
return data
@app.middleware("http")
async def timeout_middleware(request: Request, call_next):
try:
start_time = time.time()
return await asyncio.wait_for(call_next(request), timeout=REQUEST_TIMEOUT_ERROR)
except asyncio.TimeoutError:
process_time = time.time() - start_time
return JSONResponse({'detail': 'Request processing time excedeed limit',
'processing_time': process_time},
status_code=HTTP_504_GATEWAY_TIMEOUT)