|
from fastapi import FastAPI, Request |
|
import sys |
|
import time |
|
import uvicorn |
|
import structlog |
|
import logging |
|
from .routers import full, list_speakers,voice_api |
|
import nltk |
|
from fastapi.middleware.cors import CORSMiddleware |
|
nltk.download('punkt') |
|
|
|
app=FastAPI() |
|
|
|
origins = [ |
|
"http://localhost.tiangolo.com", |
|
"https://localhost.tiangolo.com", |
|
"http://localhost", |
|
"http://localhost:3000", |
|
"https://2c6b-182-186-105-95.ngrok-free.app", |
|
] |
|
app.add_middleware( |
|
CORSMiddleware, |
|
allow_origins=origins, |
|
allow_credentials=True, |
|
allow_methods=["*"], |
|
allow_headers=["*"], |
|
) |
|
|
|
|
|
structlog.configure( |
|
processors=[ |
|
|
|
structlog.stdlib.filter_by_level, |
|
|
|
|
|
|
|
structlog.stdlib.add_log_level, |
|
|
|
structlog.stdlib.PositionalArgumentsFormatter(), |
|
|
|
structlog.processors.TimeStamper(fmt="iso"), |
|
|
|
|
|
structlog.processors.StackInfoRenderer(), |
|
|
|
|
|
|
|
structlog.processors.format_exc_info, |
|
|
|
structlog.processors.UnicodeDecoder(), |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
structlog.processors.JSONRenderer() |
|
], |
|
|
|
|
|
wrapper_class=structlog.stdlib.BoundLogger, |
|
|
|
|
|
|
|
|
|
logger_factory=structlog.stdlib.LoggerFactory(), |
|
|
|
|
|
cache_logger_on_first_use=True, |
|
) |
|
|
|
logging.basicConfig( |
|
format="%(message)s", |
|
stream=sys.stdout, |
|
level=logging.DEBUG, |
|
) |
|
log = structlog.get_logger(__name__) |
|
|
|
|
|
|
|
@app.middleware("http") |
|
async def log_requests(request: Request, call_next): |
|
start_time = time.time() |
|
|
|
response = await call_next(request) |
|
|
|
process_time = (time.time() - start_time) * 1000 |
|
formatted_process_time = '{0:.2f}'.format(process_time) |
|
|
|
log.info(f"path={request.url.path} completed_in={formatted_process_time}ms status_code={response.status_code}") |
|
|
|
return response |
|
|
|
app.include_router(full.router) |
|
app.include_router(list_speakers.router) |
|
app.include_router(voice_api.router) |
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
uvicorn.run(app, host="0.0.0.0", port=8000) |