Refactor main.py to include middleware for

flattening query string lists.
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-11-13 18:04:29 -03:00
commit 564eef87c9

View file

@ -1,19 +1,16 @@
from pathlib import Path
from typing import Optional
from fastapi import FastAPI
from urllib.parse import urlencode
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from langflow.api import router
from langflow.interface.utils import setup_llm_caching
from langflow.services.utils import initialize_services
from langflow.services.plugins.langfuse import LangfuseInstance
from langflow.services.utils import (
teardown_services,
)
from langflow.services.utils import initialize_services, teardown_services
from langflow.utils.logger import configure
@ -23,7 +20,6 @@ def create_app():
configure()
app = FastAPI()
origins = ["*"]
app.add_middleware(
@ -34,6 +30,16 @@ def create_app():
allow_headers=["*"],
)
@app.middleware("http")
async def flatten_query_string_lists(request: Request, call_next):
flattened = []
for key, value in request.query_params.multi_items():
flattened.extend((key, entry) for entry in value.split(","))
request.scope["query_string"] = urlencode(flattened, doseq=True).encode("utf-8")
return await call_next(request)
@app.get("/health")
def health():
return {"status": "ok"}
@ -96,6 +102,7 @@ def setup_app(
if __name__ == "__main__":
import uvicorn
from langflow.__main__ import get_number_of_workers
configure()