안녕하세요. 클스 입니다.
오늘은 FastAPI에 여러개 worker를 실행하는 것을 해보려고 합니다.
많은 요청을 처리하기 위해서 worker를 해주면 좋습니다.
worker의 계산은 2 x number_of_cores +1 이 적절하다고 합니다.
좀더 정확하게 산출해보려면 아래와 같이 계산하면 됩니다.
number_of_workers = number_of_cores x num_of_threads_per_core + 1
MacOS의 터미널에서
$ sysctl -n hw.packages ==> MacOS에 장착된 cpu socket 수
$ sysctl hw.physicalcpu hw.logicalcpu ==> cpu의 core 수, 총 thread 수
num_of_threads_per_core(core당 thread 수) = hw.logicalcpu / hw.physicalcpu$ sysctl -n hw.ncpu 혹은 ==> core 수
$ sysctl -n machdep.cpu.thread_count ==> core 수
uvicorn과 hypercorn으로 실행하는데 --reload 옵션이 있으면 --workers는 무시되고 1개만 뜹니다.
그리고 reload process가 1개 실행 됩니다.
참고로 FastAPI 공식 문서에서는 worker를 띄울때는 uvicorn 보다는 gunicorn을 사용하는게 좋다고 합니다.
그래서 저는 hypercorn을 많이 사용합니다.
INFO: Started server process [91202]
INFO: Waiting for application startup.
INFO: Started server process [91203]
INFO: Waiting for application startup.
INFO: Started server process [91204]
INFO: Waiting for application startup.
INFO: Started server process [91201]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Application startup complete.
INFO: Application startup complete.
INFO: Application startup complete.
======== 저는 배드민턴을 좋아하는 클스 입니다. =========
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
아래를 눌러서 구매 부탁드립니다.


댓글
댓글 쓰기