기본 콘텐츠로 건너뛰기

라벨이 worker인 게시물 표시

[FastAPI] uvicorn, hypercorn에서 worker 여러개 띄우기 (feat. 배드민턴 셔틀콕 추천)

안녕하세요. 클스 입니다. 오늘은 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을 많이 사용합니다. # uvicorn ```sh $ APP_ENV=dev uvicorn app:app --host "0.0.0.0" --port "8001" --reload $ APP_ENV=dev uvicorn app:app --host "0.0.0.0" --port "8001" --workers 4 ``` # hypercorn ```sh $ APP_ENV=dev hypercorn app:app --...