I have a FastAPI endpoint like this:
@app.get("/api/triggers")
async def get_triggers(s_id: str = Query(None), trigger_id: str = None, limit: str = None, offset: int = None,
session: Session = Depends(get_db)):
if trigger_id:
if "," in trigger_id:
trigger_id = trigger_id.replace(" ", "").split(',')
else:
trigger_id = [trigger_id]
trigger_info = session.query(Trigger).filter(Trigger.id.in_(trigger_id)).offset(offset).limit(limit).all()
for key in trigger_info:
del key.geometry_global
return trigger_info
if s_id:
if "," in s_id:
s_id = s_id.split(',')
else:
s_id = [s_id]
result = session.query(Trigger).options(load_only("id", "geometry_global")).offset(offset).limit(limit). \
filter(Trigger.s_id_fk.in_(s_id)).all()
else:
result = session.query(Trigger).options(load_only("id", "geometry_global")).offset(offset).limit(limit).all()
return ORJSONResponse(result)
How can I speed it up? There are million of rows in the table and json response seems to be very slow. I have added pagination, so that chunks of data can be retrieved by multiple api calls. But Is there any other way by which response can be speed up?