문제:
FastAPI 엔드포인트는 눈에 띄게 느려서 약 1분이 소요됩니다. 데이터는 처음에 json.loads()를 사용하여 쪽모이 세공 파일에서 로드되고 반환되기 전에 필터링됩니다. 데이터를 전달하기 위한 보다 신속한 접근 방식을 모색합니다.
해결 방법:
parse_parquet() 함수 내의 여러 JSON 변환으로 인해 응답 시간이 느려집니다. FastAPI는 시간이 많이 걸리는 프로세스인 json.dumps()로 직렬화하기 전에 jsonable_encoder를 사용하여 반환된 값을 자동으로 인코딩합니다. orjson 또는 ujson과 같은 외부 JSON 인코더는 잠재적인 속도 향상을 제공합니다.
그러나 가장 효율적인 솔루션은 불필요한 JSON 변환을 피하는 것입니다. 다음 코드는 사용자 정의 APIRoute 클래스를 활용하여 Pandas DataFrames에서 직접 JSON 응답을 활성화합니다.
<code class="python">from fastapi import APIRoute class TimedRoute(APIRoute): # Custom handler for capturing response time def get_route_handler(self): original_route_handler = super().get_route_handler() async def custom_route_handler(request): before = time.time() response = await original_route_handler(request) duration = time.time() - before response.headers["Response-Time"] = str(duration) print(f"route duration: {duration}") return response return custom_route_handler</code>
이 코드를 사용하면 다양한 데이터 변환 방법의 응답 시간을 비교할 수 있습니다. 160,000개의 행과 45개의 열이 있는 샘플 쪽모이 세공 파일을 사용하여 다음 결과를 얻었습니다.
사용자 경험을 개선하려면 브라우저 내에 데이터를 표시하는 대신 첨부 파일 매개변수와 파일 이름을 사용하여 Content-Disposition 헤더를 설정하여 다운로드를 시작하는 것이 좋습니다. 이 접근 방식은 브라우저 제약을 우회하고 프로세스 속도를 높입니다.
또한 Dask는 대규모 데이터 세트를 최적화하여 처리하여 Pandas에 대한 대안을 제공합니다. 대용량 데이터를 처리할 때 메모리 문제를 피하기 위해 스트리밍 또는 비동기 응답을 고려할 수도 있습니다.
위 내용은 FastAPI에서 대규모 데이터 세트에 대한 JSON 응답 시간을 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!