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 pathlib import Path
from typing import Optional 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.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
from langflow.api import router from langflow.api import router
from langflow.interface.utils import setup_llm_caching 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.plugins.langfuse import LangfuseInstance
from langflow.services.utils import ( from langflow.services.utils import initialize_services, teardown_services
teardown_services,
)
from langflow.utils.logger import configure from langflow.utils.logger import configure
@ -23,7 +20,6 @@ def create_app():
configure() configure()
app = FastAPI() app = FastAPI()
origins = ["*"] origins = ["*"]
app.add_middleware( app.add_middleware(
@ -34,6 +30,16 @@ def create_app():
allow_headers=["*"], 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") @app.get("/health")
def health(): def health():
return {"status": "ok"} return {"status": "ok"}
@ -96,6 +102,7 @@ def setup_app(
if __name__ == "__main__": if __name__ == "__main__":
import uvicorn import uvicorn
from langflow.__main__ import get_number_of_workers from langflow.__main__ import get_number_of_workers
configure() configure()