> 백엔드 개발 > 파이썬 튜토리얼 > FastAPI가 API 호출을 병렬이 아닌 직렬로 실행하는 이유는 무엇입니까?

FastAPI가 API 호출을 병렬이 아닌 직렬로 실행하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-27 20:24:10
원래의
512명이 탐색했습니다.

Why Does FastAPI Run API Calls Serially Instead of in Parallel?

FastAPI는 병렬 방식 대신 직렬로 API 호출을 실행합니다

Q: FastAPI API 호출이 병렬이 아닌 직렬로 실행되는 이유는 무엇입니까?

A: FastAPI의 문서에 따르면 def를 사용할 때 경로 작업 함수를 정의하기 위한 async def 대신 직접 호출하는 대신 대기 중인 외부 스레드 풀에서 실행됩니다. 이는 서버 차단을 방지하기 위해 수행됩니다.

병렬 실행에 대한 추가 고려 사항:

비동기 def 및 def 엔드포인트:

  • async def: 함수가 직접 실행됨 이벤트 루프에서; 비차단 I/O 바인딩 작업을 기다리는 한 동시에 처리됩니다.
  • def: 함수는 외부 스레드 풀과 별도의 스레드에서 실행됩니다. 이벤트 루프 외부에서 실행되지 않는 한 순차적으로 처리됩니다.

차단 작업 사용:

비동기 def 엔드포인트에 차단 작업이 포함되어 있고 기다리지 않는 경우 완료되면 이벤트 루프가 차단되고 요청이 처리됩니다.

해결책:

  • async def 대신 일반 def로 엔드포인트를 정의합니다(대기 가능한 작업이 없는 경우).
  • FastAPI의 run_in_threadpool() 함수를 사용하여 별도의 차단 작업을 실행합니다. thread.
  • 별도의 실행기나 스레드에서 차단 작업을 실행하려면 asyncio의 loop.run_in_executor() 또는 asyncio.to_thread()를 사용하세요.

기타 최적화 전략:

  • 더 많은 일꾼을 사용하여 멀티 코어 CPU의 이점.
  • 과중한 백그라운드 계산에는 Celery 또는 AsyncIOScheduler를 사용하는 것이 좋습니다.

위 내용은 FastAPI가 API 호출을 병렬이 아닌 직렬로 실행하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿