From 564eef87c9f993780a2f7e9b0cc02b9f6738e6b3 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Mon, 13 Nov 2023 18:04:29 -0300 Subject: [PATCH] Refactor main.py to include middleware for flattening query string lists. --- src/backend/langflow/main.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/backend/langflow/main.py b/src/backend/langflow/main.py index 9caa157d0..1369d7c4f 100644 --- a/src/backend/langflow/main.py +++ b/src/backend/langflow/main.py @@ -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()