FastAPI에서 JSON 데이터 검색 속도 최적화
FastAPI의 GET 엔드포인트에서 상당한 규모의 JSON 페이로드가 느리게 반환되는 것은 반복되는 문제입니다. json.loads()를 사용하여 파일에서 데이터를 전송하기 위해 json.dumps()를 사용하면 응답이 크게 지연됩니다. 반환 데이터를 사용하여 사용자에게 데이터를 보낼 수 있지만 더 효율적인 접근 방식이 있습니까?
문제:
처리 파이프라인은 처음에 pandas의 to_json을 사용하여 데이터를 JSON으로 변환합니다. () 함수를 사용하여 json.loads()를 사용하여 사전에 로드하고 마지막으로 다시 JSON으로 변환합니다. 이 다단계 변환 프로세스는 상당한 대기 시간을 발생시킵니다.
제안 솔루션:
먼저 FastAPI가 다음을 사용하여 반환 값을 JSON 호환 데이터로 변환한다는 점을 인식하는 것이 중요합니다. jsonable_encoder, 표준 Python의 json.dumps() 함수를 사용한 직렬화가 이어집니다. 이 2단계 프로세스는 느린 것으로 알려져 있습니다.
옵션 1: 대체 JSON 인코더 활용
orjson 또는 ujson과 같은 대체 JSON 인코더 사용을 고려하세요. 이러한 인코더는 기본 jsonable_encoder 및 json.dumps() 조합보다 성능이 뛰어납니다.
옵션 2: 사용자 지정 응답의 직접 반환
최적의 성능을 위해서는 사용자 지정 APIRoute 클래스를 사용하고 응답을 반환합니다. 물체. 이는 FastAPI의 기본 JSON 변환 프로세스를 우회합니다.
<code class="python">from fastapi.routing import APIRouter, APIRoute class TimedRoute(APIRoute): ... app = FastAPI() router = APIRouter(route_class=TimedRoute) @router.get("/custom-response") def get_data(): df = pd.read_parquet('data.parquet') return Response(df.to_json(orient="records"), media_type="application/json") app.include_router(router)</code>
추가 고려 사항:
위 내용은 FastAPI에서 JSON 데이터 검색 속도를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!