connectionTimeout, receiveTimeout, sendTimeout 등을 바꿨는데, 사실 이거는 굳이 안건드리셔도 될것 같습니다! 이거 바꿨어도 어차피 안됬었거든요… 그래도 적어봤습니다.
여기까지가 클라이언트 측에서 수정한 내용들이고, 이후 수정은 서버에서 하였습니다!
4. Flask 서버 환경 개선
flask에 gunicorn을 추가하면 여러가지 설정이 가능합니다.
먼저 gunicorn을 설치해주세요.
pip install gunicorn
기존의 flask 실행할 때 python app.py 라면, gunicorn을 사용하여 실행할 때는 아래와 같이 실행하면 됩니다.
gunicorn app.app
하지만 우리는 추가 설정을 하기 위해 gunicorn을 설치한 것이니, 추가 설정을 해보도록 하겠습니다.
실행 파일과 같은 위치에 ‘service_config.py’를 만들어주세요.
# service_config.py
# 서버 바인딩 설정
bind = '0.0.0.0:8000'
# 워커 설정
workers = 4 # 워커 프로세스 수
worker_class = 'gevent' # 워커 클래스 (gevent 사용 예시)
worker_connections = 1000 # gevent 워커당 최대 연결 수
# 타임아웃 설정
timeout = 30 # 타임아웃 설정 (초)
keepalive = 2 # 유지 시간 설정 (초)
# 로그 설정
accesslog = '/path/to/access.log' # 접근 로그 파일 경로
errorlog = '/path/to/error.log' # 에러 로그 파일 경로
loglevel = 'info' # 로그 레벨 (debug, info, warning, error, critical)
# 보안 설정
limit_request_line = 4094 # 요청 라인 제한 (바이트)
limit_request_fields = 100 # 요청 헤더 필드 수 제한
limit_request_field_size = 8190 # 요청 헤더 필드 크기 제한 (바이트)
# 기타 설정
preload_app = False # 앱 미리 로드 여부
max_requests = 0 # 워커가 재시작되기 전에 처리할 최대 요청 수
max_requests_jitter = 0 # max_requests에 대한 지터 값 (랜덤하게 추가되는 최대 값)
graceful_timeout = 30 # 우아한 종료를 위한 타임아웃 (초)