목차
반응형
1. 설명
1.1. Gunicorn
- WSGI(Web Server Gateway Interface) 서버
- HTTP 요청(클라이언트의 요청)을 애플리케이션(FastAPI)에 전달하고, 애플리케이션의 응답을 클라이언트로 다시 전송하는 역할을 합니다.
- 동기 프레임워크를 실행할 때 주로 사용. 비동기 I/O를 지원하지 않기 때문에, FastAPI와 같은 ASGI 프레임워크를 직접 실행할 수는 없다
- FastAPI와 같이 비동기 지원이 필요한 경우 Uvicorn을 Gunicorn의 워커로 사용하는 방식으로 함께 사용하여, 다중 프로세스의 이점을 살리면서 비동기 처리 성능을 향상시킵니다.
1.2. Uvicorn
- ASGI(Asynchronous Server Gateway Interface) 서버
- 비동기 프레임워크에 최적화
- FastAPI, Starlette 같은 ASGI 기반 애플리케이션을 직접 실행할 때 사용
- 대규모 프로덕션 환경에서는 다중 프로세스를 지원하는 Gunicorn과 함께 사용
결론, Uvicorn을 Gunicorn의 워커로 사용하는 방식으로 함께 사용
2. 사용 방법
2.1. 기본 사용법
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
- - w <int>: 워커 프로세스 수를 설정
- 워커 수는 CPU 코어 수에 따라 설정합니다. 일반적으로 (CPU 코어 수 * 2) + 1로 설정
- -k <worker class>: 워커 클래스를 지정합니다.
- uvicorn.workers.UvicornWorker를 사용하여 ASGI 지원을 활성화
2.2. 파라미터
gunicorn -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:443 --timeout 60 --daemon --access-logfile access.log --error-logfile error.log main:app
- --bind <address>: 서버 바인딩 주소를 지정합니다. 예: --bind 0.0.0.0:8000
- 예를 들어, 0.0.0.0는 FastAPI 서버가 모든 네트워크 인터페이스에서 들어오는 요청을 수신
- 127.0.0.1은 로컬호스트로, 해당 서버 내부에서만 접근이 가능
- --timeout <int>: 요청 타임아웃을 설정합니다(기본값은 30초)
- 서버가 클라이언트의 요청을 처리하는 데 허용된 최대 시간
- --daemon
- 백그라운드에서 실행하도록 설정합니다.
- --access-logfile <path> 및 --error-logfile <path>: 로그 파일 경로를 설정하여 접근 로그와 에러 로그를 파일로 기록할 수 있습니다.
- --worker-connections <int>: 각 워커가 동시에 처리할 수 있는 최대 연결 수를 설정합니다. (비동기 작업에서 유용)
- 비동기 서버의 병렬 처리 성능을 제어
- 100으로 설정하면, 각 워커가 동시에 최대 100개의 클라이언트 요청을 유지
마치며, FastAPI 내부 코드에서 따로 설정해 줄 일이 없기 때문에
실행 할 때에만 코드를 만들어 준다는 점에 있어서
사용하기는 참 편하다! 라고 생각이 든다.
반응형
'Fastapi' 카테고리의 다른 글
[FastAPI] FastAPI에서 Redis 사용하기 (3) | 2024.11.20 |
---|---|
[FastAPI] SSO 로그인과 OAuth 2.0 (0) | 2024.11.16 |
[FastAPI] Pydantic 사용법 (5) (0) | 2024.08.31 |
[FastAPI] 비동기(Asynchronous)프로그래밍 (4) (0) | 2024.08.24 |
[FastAPI] HTML 사용해 보기 (3) (0) | 2024.08.22 |