gunicorn - 실행하기

hwisaac·2023년 9월 6일
0

gunicorn

목록 보기
3/8

Gunicorn 실행하기

Gunicorn은 명령어를 사용하거나 Django, Pyramid, TurboGears와 같은 유명한 프레임워크와 통합하여 실행할 수 있습니다. Gunicorn을 프로덕션 환경에서 배포하는 방법은 Gunicorn 배포를 참조하세요.

명령어

Gunicorn을 설치하면 gunicorn이라는 커맨드 라인 스크립트에 접근할 수 있습니다.

gunicorn

기본 사용법:

$ gunicorn [옵션] [WSGI_APP]

여기서 WSGI_APP$(MODULE_NAME):$(VARIABLE_NAME) 패턴입니다. 모듈 이름은 전체 점으로 구분된 경로일 수 있습니다. 변수 이름은 지정된 모듈에서 찾을 수 있는 WSGI 호출 가능 객체를 나타냅니다.

버전 20.1.0에서 변경: WSGI_APP설정 파일에서 정의되어 있다면 선택적입니다.

테스트 앱 예시:

def app(environ, start_response):
    """가능한 가장 단순한 애플리케이션 객체"""
    data = b'Hello, World!\n'
    status = '200 OK'
    response_headers = [
        ('Content-type', 'text/plain'),
        ('Content-Length', str(len(data)))
    ]
    start_response(status, response_headers)
    return iter([data])

다음 명령어로 앱을 실행할 수 있습니다:

$ gunicorn --workers=2 test:app

변수 이름은 함수 호출일 수도 있습니다. 이 경우 이름은 모듈에서 가져온 다음 애플리케이션 객체를 얻기 위해 호출됩니다. 이를 "애플리케이션 팩토리" 패턴이라고 일반적으로 부릅니다.

def create_app():
    app = FrameworkApp()
    ...
    return app
$ gunicorn --workers=2 'test:create_app()'

위치 및 키워드 인수도 전달될 수 있지만, 환경 변수에서 설정을 불러오는 것이 권장됩니다.

자주 사용되는 인수:

  • -c CONFIG, --config=CONFIG - 설정 파일을 지정합니다. 형식은 $(PATH), file:$(PATH), 또는 python:$(MODULE_NAME)입니다.
  • -b BIND, --bind=BIND - 바인딩할 서버 소켓을 지정합니다. 서버 소켓은 $(HOST), $(HOST):$(PORT), fd://$(FD), 또는 unix:$(PATH) 중 하나입니다.
  • -w WORKERS, --workers=WORKERS - 작업자 프로세스의 수입니다. 일반적으로 이 수는 서버 코어당 2-4 작업자 사이여야 합니다.
  • -k WORKERCLASS, --worker-class=WORKERCLASS - 실행할 작업자 프로세스의 유형입니다.
  • -n APP_NAME, --name=APP_NAME - 프로세스 시스템 테이블에서 Gunicorn 프로세스의 이름을 조정할 수 있습니다.

환경 변수 GUNICORN_CMD_ARGS를 사용하여 설정을 지정할 수 있습니다.

자세한 사용법은 설정 개요설정을 참조하세요.

통합

Gunicorn은 또한 Django와 Paste Deploy 애플리케이션을 위한 통합을 제공합니다.

Django

Gunicorn은 지정되지 않은 경우 WSGI 호출 가능 객체인 application을 찾을 것입니다. 따라서 일반적인 Django 프로젝트에서 Gunicorn을 호출하는 방법은 다음과 같습니다:

$ gunicorn myproject.wsgi

참고: 이렇게 하려면 프로젝트가 Python 경로에 있어야 합니다; 가장 간단한 방법은 manage.py 파일과 같은 디렉터리에서 이 명령어를 실행하는 것입니다.

설정 경로를 불러오기 위해 --env 옵션을 사용할 수 있습니다. 필요한 경우 --pythonpath 옵션을 사용하여 애플리케이션 경로를 PYTHONPATH에 추가할 수도 있습니다:

$ gunicorn --env DJANGO_SETTINGS_MODULE=myproject.settings myproject.wsgi

Paste Deployment

Pyramid과 Turbogears와 같은 프레임워크는 일반적으로 Paste Deployment 설정 파일을 사용하여 구성됩니다. 이 파일들을 Gunicorn과 함께 사용하고 싶다면 두 가지 접근법이 있습니다.

서버 러너로서 Gunicorn은 pserve 또는 gearbox와 같은 프레임워크의 명령어를 사용하여 애플리케이션을 제공할 수 있습니다. 설정 파일에서 서버로 Gunicorn을 지정하려면 다음과 같이 작성하십시오:

[server:main]
use = egg:gunicorn#main
host = 127.0.0.1
port = 8080
workers = 3

이 접근법은 Gunicorn을 빠르게 시작하는 가장 빠른 방법입니다만, 몇 가지 제한 사항이 있습니다. Gunicorn은 애플리케이션의 로딩 방식을 제어할 수 없으므로, reload와 같은 설정은 효과가 없고, 실행 중인 애플리케이션을 뜨거운 업그레이드할 수 없습니다.

Gunicorn의 전체 재로딩 및 뜨거운 코드

업그레이드 기능을 활용하려면, 다음과 같은 명령어로 설정 파일을 실행해야 합니다:

$ gunicorn --paste development.ini

이렇게 하면 Gunicorn은 프레임워크 명령어를 대체하여 애플리케이션을 로딩할 수 있고, 애플리케이션 코드 업데이트와 설정 변경을 지원할 수 있습니다.

더 자세한 내용은 PasteDeploy 문서를 참고하세요.

0개의 댓글