feat: endpoint basic examples add cache Increase interface speed (#7124)
* Update py_autofix.yml * feat: endpoint basic_examples add cache * Revert "Update py_autofix.yml" This reverts commit 7aed45e98602f57c2d6d33532080bad30cf02507. * resolve conflicts * refactor: update response handling in read_basic_examples function --------- Co-authored-by: tianzhipeng <tzpabc@gmail.com> Co-authored-by: caojianwei-jk <caojianwei-jk@360shuke.com>
This commit is contained in:
parent
9af9986c64
commit
4ce5a4228c
1 changed files with 15 additions and 5 deletions
|
|
@ -11,7 +11,7 @@ from uuid import UUID
|
||||||
import orjson
|
import orjson
|
||||||
from aiofile import async_open
|
from aiofile import async_open
|
||||||
from anyio import Path
|
from anyio import Path
|
||||||
from fastapi import APIRouter, Depends, File, HTTPException, UploadFile
|
from fastapi import APIRouter, Depends, File, HTTPException, Response, UploadFile
|
||||||
from fastapi.encoders import jsonable_encoder
|
from fastapi.encoders import jsonable_encoder
|
||||||
from fastapi.responses import StreamingResponse
|
from fastapi.responses import StreamingResponse
|
||||||
from fastapi_pagination import Page, Params
|
from fastapi_pagination import Page, Params
|
||||||
|
|
@ -526,6 +526,9 @@ async def download_multiple_file(
|
||||||
return flows_without_api_keys[0]
|
return flows_without_api_keys[0]
|
||||||
|
|
||||||
|
|
||||||
|
all_starter_folder_flows_response: Response | None = None
|
||||||
|
|
||||||
|
|
||||||
@router.get("/basic_examples/", response_model=list[FlowRead], status_code=200)
|
@router.get("/basic_examples/", response_model=list[FlowRead], status_code=200)
|
||||||
async def read_basic_examples(
|
async def read_basic_examples(
|
||||||
*,
|
*,
|
||||||
|
|
@ -540,17 +543,24 @@ async def read_basic_examples(
|
||||||
list[FlowRead]: A list of basic example flows.
|
list[FlowRead]: A list of basic example flows.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
# Get the starter project
|
global all_starter_folder_flows_response # noqa: PLW0603
|
||||||
|
|
||||||
|
if all_starter_folder_flows_response:
|
||||||
|
return all_starter_folder_flows_response
|
||||||
|
# Get the starter folder
|
||||||
starter_folder = (await session.exec(select(Folder).where(Folder.name == STARTER_FOLDER_NAME))).first()
|
starter_folder = (await session.exec(select(Folder).where(Folder.name == STARTER_FOLDER_NAME))).first()
|
||||||
|
|
||||||
if not starter_folder:
|
if not starter_folder:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
# Get all flows in the starter project
|
# Get all flows in the starter folder
|
||||||
flows = (await session.exec(select(Flow).where(Flow.folder_id == starter_folder.id))).all()
|
all_starter_folder_flows = (await session.exec(select(Flow).where(Flow.folder_id == starter_folder.id))).all()
|
||||||
|
|
||||||
|
flow_reads = [FlowRead.model_validate(flow, from_attributes=True) for flow in all_starter_folder_flows]
|
||||||
|
all_starter_folder_flows_response = compress_response(flow_reads)
|
||||||
|
|
||||||
# Return compressed response using our utility function
|
# Return compressed response using our utility function
|
||||||
return compress_response(flows)
|
return all_starter_folder_flows_response # noqa: TRY300
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise HTTPException(status_code=500, detail=str(e)) from e
|
raise HTTPException(status_code=500, detail=str(e)) from e
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue