생성기 기능으로 스트리밍되지 않는 StreamingResponse
FastAPI는 StreamingResponse 클래스를 제공하여 점진적으로 클라이언트에 응답을 보냅니다. 그러나 경우에 따라 이 기능이 예상대로 작동하지 않을 수 있습니다.
근본 원인 조사
제공된 FastAPI 코드와 문제 설명을 분석한 결과, 여러 가지 잠재적인 원인:
1. 데이터 요청 시 POST 요청 사용:
POST 요청 사용은 서버에서 데이터를 요청하는 데 적합하지 않습니다. 대신 GET 요청을 사용하는 것이 좋습니다.
2. 인증을 위한 쿼리 매개변수 사용:
쿼리 매개변수를 통해 auth_key와 같은 민감한 자격 증명을 보내는 것은 안전하지 않습니다. 대신 인증을 위해 헤더나 쿠키를 사용하는 것을 고려해 보세요.
3. 차단 생성기 기능:
StreamingResponse의 생성기 기능은 def(비동기 def 아님)로 정의되어 있어 FastAPI 이벤트 루프 내에서 차단 문제가 발생할 수 있습니다.
4. 줄 기반 청킹:
Requests' iter_lines()는 한 번에 한 줄씩 응답 데이터를 반복합니다. 응답에 줄 바꿈이 없으면 데이터가 증분적으로 인쇄되지 않습니다.
5. MIME 스니핑:
일부 브라우저(예: Chrome)에서는 일반 텍스트 콘텐츠를 표시하기 전에 확인하기 위해 텍스트/일반 응답을 버퍼링할 수 있습니다. 이는 스트리밍을 방해할 수 있습니다.
권장 수정 사항:
1. GET 요청 사용:
데이터 가져오기에 GET 요청을 사용하도록 코드를 리팩터링합니다.
2. 보안 인증:
헤더나 쿠키를 사용하여 인증 정보를 안전하게 전송하세요.
3. 비동기 생성기 기능:
async def를 사용하여 StreamingResponse에 대한 생성기 함수를 정의합니다. 생성기 내에서 차단 작업이 필요한 경우 외부 스레드 풀을 사용하여 실행합니다.
4. 청크 기반 청킹:
iter_lines() 대신 iter_content()를 사용하여 응답 데이터를 청크로 반복합니다. 적절한 청크 크기를 지정하세요.
5. MIME 스니핑 비활성화:
StreamingResponse에 대해 다른 미디어 유형(예: application/json 또는 text/event-stream)을 지정하거나 X-Content-Type-Options 헤더를 nosniff로 설정하여 MIME 스니핑을 비활성화합니다.
작업 예:
다음 코드는 스트리밍 기능을 갖춘 작동하는 FastAPI 앱을 보여줍니다.
from fastapi import FastAPI, StreamingResponse import asyncio app = FastAPI() async def fake_data_streamer(): for i in range(10): yield b'some fake data\n\n' await asyncio.sleep(0.5) @app.get('/') async def main(): return StreamingResponse(fake_data_streamer(), media_type='text/event-stream')
위 내용은 내 FastAPI StreamingResponse가 생성기 함수와 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

ArraysareGenerallyMorememory- 효율적 인 thanlistsortingnumericaldataduetotheirfixed-sizenatureanddirectmemoryAccess.1) ArraysStoreElementsInacontiguousBlock, retoneverHead-fompointerSormetAdata.2) 목록, 종종 implementededymamamicArraysorlinkedStruct

ToconvertapyThonlisttoAnarray, usethearraymodule : 1) importThearrayModule, 2) CreateAlist, 3) Usearray (typecode, list) toconvertit, thetypecodelike'i'forintegers

Python 목록은 다양한 유형의 데이터를 저장할 수 있습니다. 예제 목록에는 정수, 문자열, 부동 소수점 번호, 부울, 중첩 목록 및 사전이 포함되어 있습니다. 목록 유연성은 데이터 처리 및 프로토 타이핑에서 가치가 있지만 코드의 가독성과 유지 관리를 보장하기 위해주의해서 사용해야합니다.

PythondoesnothaveBuilt-inarrays; Usethearraymoduleformory- 효율적인 호모 유전자 도자기, whilistsareversartileformixedDatatypes.arraysareefficiTiveDatasetsophesAty, whereferfiblityAndareAsiErtouseFormixOrdorSmallerSmallerSmallerSMATASETS.

themoscommonLyusedModuleForraySinisThonisNumpy.1) NumpyProvideseficileditionToolsForArrayOperations, IdealFornumericalData.2) ArrayscanBecreatedUsingnp.array () for1dand2dsuctures.3) Numpyexcelsinlement-wiseOperations Numpyexcelscelslikemea

toAppendElementStoapyThonList, usetHeappend () MethodForsingleElements, extend () formultipleements, andinsert () forspecificpositions.1) useappend () foraddingOneElementatateend.2) usextend () toaddmultipleementsefficially

To TeCreateAtheThonList, usequareBrackets [] andseparateItemswithCommas.1) ListSaredynamicandCanholdMixedDatAtatypes.2) useappend (), remove () 및 SlicingFormAnipulation.3) listlisteforences;) ORSL

금융, 과학 연구, 의료 및 AI 분야에서 수치 데이터를 효율적으로 저장하고 처리하는 것이 중요합니다. 1) 금융에서 메모리 매핑 파일과 Numpy 라이브러리를 사용하면 데이터 처리 속도가 크게 향상 될 수 있습니다. 2) 과학 연구 분야에서 HDF5 파일은 데이터 저장 및 검색에 최적화됩니다. 3) 의료에서 인덱싱 및 파티셔닝과 같은 데이터베이스 최적화 기술은 데이터 쿼리 성능을 향상시킵니다. 4) AI에서 데이터 샤딩 및 분산 교육은 모델 교육을 가속화합니다. 올바른 도구와 기술을 선택하고 스토리지 및 처리 속도 간의 트레이드 오프를 측정함으로써 시스템 성능 및 확장 성을 크게 향상시킬 수 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

Dreamweaver Mac版
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!