FastAPI StreamingResponse가 생성기 기능을 사용하여 스트리밍하지 못함
FastAPI의 StreamingResponse는 증분적으로 클라이언트에 데이터를 다시 보내는 편리한 방법이지만 가끔은 특히 생성기 기능을 사용할 때 예상대로 작동하지 않을 수 있습니다. 여기서는 잠재적인 원인과 각각의 해결 방법을 살펴보겠습니다.
일반적인 원인 및 해결 방법:
1. 잘못된 HTTP 방법 및 자격 증명 처리:
데이터 검색에 POST 요청을 사용하지 마세요. 대신 GET 요청을 선택하세요. 또한 보안을 강화하고 URL 매개변수 오염을 방지하기 위해 쿼리 매개변수보다는 자격 증명에 헤더나 쿠키를 사용하는 것이 좋습니다.
2. 생성기 함수 내 작업 차단:
생성기 함수에 I/O 또는 CPU 집약적 작업 차단이 포함된 경우 async def 대신 def를 사용하여 잠재적인 교착 상태 및 이벤트 루프 중단을 방지하세요. 또는 async def를 사용하는 경우 별도의 ThreadPool 또는 ProcessPool에서 차단 작업을 실행합니다.
3. 불완전한 줄 바꿈:
요청의 iter_lines()를 사용하여 응답 데이터를 반복하는 경우 응답을 한 줄씩 읽는다는 점을 고려하세요. 데이터가 도착하는 대로 표시되도록 하려면 줄 바꿈을 포함하도록 응답을 수정하거나 지정된 청크 크기로 iter_content()를 사용하십시오.
4. 미디어 유형 및 MIME 스니핑:
브라우저는 콘텐츠 유형을 감지하기 위해 텍스트/일반 응답을 버퍼링할 수 있습니다. 이를 방지하려면 다른 미디어 유형(예: application/json 또는 text/event-stream)을 사용하거나 X-Content-Type-Options 헤더를 nosniff로 설정하여 MIME 스니핑을 비활성화하세요.
예 해결책:
다음은 가짜 데이터를 스트리밍하고 언급된 문제를 해결하는 FastAPI 앱의 실제 구현입니다. 문제:
from fastapi import FastAPI from fastapi.responses import 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(): headers = {'X-Content-Type-Options': 'nosniff'} return StreamingResponse(fake_data_streamer(), headers=headers, media_type='text/plain')
스트리밍 응답 처리는 클라이언트(웹 브라우저, HTTP 클라이언트 등) 및 해당 기능에 따라 다를 수 있다는 점에 유의하세요.
위 내용은 내 FastAPI StreamingResponse가 생성기 기능을 사용하여 스트리밍하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Pythonusesahybridmodelofilationandlostretation : 1) ThePyThoninterPretreCeterCompileSsourcodeIntOplatform-IndependentBecode.

Pythonisbothingretedandcompiled.1) 1) it 'scompiledtobytecodeforportabilityacrossplatforms.2) thebytecodeisthentenningreted, withfordiNamictyTeNgreted, WhithItmayBowerShiledlanguges.

forloopsareusedwhendumberofitessiskNowninadvance, whilewhiloopsareusedwhentheationsdepernationsorarrays.2) whiloopsureatableforscenarioScontiLaspecOndCond

pythonisnotpurelynlogreted; itusesahybrideprophorfbyodecodecompilationandruntime -INGRETATION.1) pythoncompilessourcecodeintobytecode, thepythonVirtualMachine (pvm)

ToconcatenatelistsinpythonwithesameElements, 사용 : 1) OperatorTokeEpduplicates, 2) asettoremovedUplicates, or3) listComperensionForControlOverDuplicates, 각 methodHasDifferentPerferformanCeanDorderImpestications.

PythonisancerpretedLanguage, 비판적 요소를 제시하는 PytherfaceLockelimitationsIncriticalApplications.1) 해석 된 언어와 같은 thePeedBackandbackandrapidProtoTyping.2) CompilledlanguagesLikec/C transformt 해석

useforloopswhhenmerfiterationsiskNownInAdvance 및 WhileLoopSweHeniTesslationsDepoyConditionismet whilEroopsSuitsCenarioswhereTheLoopScenarioswhereTheLoopScenarioswhereTheLoopScenarioswhereTherInatismet, 유용한 광고 인 푸트 gorit


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

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

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구