>  기사  >  백엔드 개발  >  대규모 JSON 데이터에 대한 FastAPI 응답 시간을 최적화하는 방법은 무엇입니까?

대규모 JSON 데이터에 대한 FastAPI 응답 시간을 최적화하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-18 23:00:30825검색

How to Optimize FastAPI Response Time for Large JSON Data?

대규모 JSON 데이터에 대한 FastAPI 응답 속도 향상

FastAPI는 API 구축을 위한 고성능 프레임워크이지만 상당한 양을 반환할 때 병목 현상이 발생할 수 있습니다. JSON 데이터의 이 시나리오에서는 시간이 많이 걸리는 데이터를 JSON 형식으로 변환하는 것이 원인인 경우가 많습니다.

옵션 1: 사용자 정의 JSON 인코더(업데이트 2)

가장 빠른 솔루션 FastAPI의 기본 JSON 인코더를 우회하고 orjson 또는 ujson과 같은 보다 효율적인 인코더를 사용하는 데 있습니다. 다음 코드 조각을 고려해보세요.

<code class="python">@app.get("/orjson")
def get_data_orjson():
    df = pd.read_parquet('data.parquet')
    return Response(orjson.dumps(df.to_dict(orient='records')), media_type="application/json")</code>

옵션 2: Direct Pandas JSON

더욱 효율적인 접근 방식은 Pandas에 내장된 JSON 변환을 활용하는 것입니다. 예는 다음과 같습니다.

<code class="python">@app.get("/pandasJSON")
def get_data_pandasJSON():
    df = pd.read_parquet('data.parquet')
    return Response(df.to_json(orient="records"), media_type="application/json")</code>

옵션 3: 청크 스트리밍

매우 큰 데이터 세트의 경우 메모리 문제를 방지하기 위해 청크 스트리밍을 고려하세요. Pandas는 증분 데이터 처리를 위한 청크 크기 매개변수와 함께 read_csv 또는 read_parquet와 같은 함수를 제공합니다.

옵션 4: Dask DataFrame

사용 가능한 메모리를 초과하는 데이터의 경우 Dask DataFrame 라이브러리 대용량 데이터를 효율적으로 처리하고 JSON으로 변환하는 데 사용할 수 있습니다. Dask는 병렬 계산을 가능하게 하며 일반적인 Pandas 작업에서 성능 문제를 일으킬 수 있는 대규모 데이터 세트를 처리할 수 있습니다.

성능 비교

제공된 샘플 코드를 통해 Pandas의 성능을 비교할 수 있습니다. 다양한 접근 방식을 직접 경험해 보세요. 앱을 실행하고 각 엔드포인트(/defaultFastAPIencoder, /orjson, /ujson, /pandasJSON)에 액세스하여 응답 시간을 관찰합니다.

추가 고려 사항

대 표시: JSON 데이터가 클라이언트 측에 표시되도록 의도된 경우 지연된 것처럼 보일 수 있습니다. 이는 광범위한 데이터를 처리하는 브라우저의 성능 제한 때문입니다.

데이터 다운로드: 사용자 데이터 다운로드를 촉진하는 것이 더 효율적인 솔루션입니다. 응답에 Content-Disposition 헤더를 사용하여 파일을 다운로드해야 함을 나타낼 수 있습니다.

요약하자면, 대규모 JSON 데이터에 대한 FastAPI의 응답 시간을 최적화하려면 효율성과 효율성을 우선시하는 데이터 변환 방법과 기술을 신중하게 고려해야 합니다. 확장성.

위 내용은 대규모 JSON 데이터에 대한 FastAPI 응답 시간을 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.