[파이썬] Flask와 WSGI 서버

Flask는 파이썬 웹 프레임워크로, 간단하고 확장 가능한 웹 애플리케이션을 구축하는 데 사용됩니다. 하지만 Flask 자체는 웹 서버를 실행하는 기능을 갖추고 있지 않습니다. 이를 위해 WSGI(Web Server Gateway Interface) 서버를 사용해야 합니다. WSGI는 파이썬 애플리케이션과 웹 서버 사이의 인터페이스를 제공하며, Flask 애플리케이션을 외부에 노출시켜 실행할 수 있도록 해줍니다.

WSGI 서버의 역할

WSGI 서버는 Flask 애플리케이션을 웹 상에서 실행하기 위한 역할을 수행합니다. 이 서버는 HTTP 요청을 받고, WSGI 애플리케이션 객체에 요청을 전달하며, 그에 대한 HTTP 응답을 반환합니다. WSGI 서버는 다양한 웹 서버와 호환되며, Gunicorn, uWSGI, mod_wsgi 등의 WSGI 서버를 사용할 수 있습니다.

Flask 애플리케이션을 WSGI 서버에 연결하기

Flask 애플리케이션을 WSGI 서버와 연결하기 위해서는 몇 가지 단계를 거쳐야 합니다. 먼저, Flask 애플리케이션을 인스턴스화하고 라우트와 뷰 함수를 작성해야 합니다. 그 다음, WSGI 서버를 설정하고 Flask 애플리케이션 객체를 입력으로 받아 실행하는 코드를 작성해야 합니다.

아래는 Flask 애플리케이션을 Gunicorn WSGI 서버에 연결하는 예제입니다:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello, Flask!"

if __name__ == '__main__':
    app.run()

위 코드에서 app은 Flask 애플리케이션 객체를 의미합니다. route 데코레이터를 이용하여 경로와 해당하는 뷰 함수를 정의할 수 있습니다. hello 뷰 함수는 루트 경로(/)로 요청이 들어오면 “Hello, Flask!”를 반환합니다. app.run()은 Flask 애플리케이션을 내장 서버로 실행하는 코드입니다. 하지만 이 코드는 실제로는 개발 목적으로만 사용되며, production 환경에서는 사용되지 않습니다.

Gunicorn WSGI 서버를 사용하여 위 Flask 애플리케이션을 실행하기 위해서는 다음 명령을 실행합니다:

$ gunicorn app:app

위 명령은 app 모듈에 정의된 app 객체를 Gunicorn이 기본적으로 찾을 수 있는 형태로 실행하는 것을 의미합니다.

다른 WSGI 서버 사용하기

다른 WSGI 서버를 사용하고 싶다면, 해당 WSGI 서버의 설정 방법을 따라야 합니다. 일반적으로는 WSGI 서버의 설치 방법에 따라 관련된 명령을 사용하여 Flask 애플리케이션을 실행할 수 있습니다.

결론

Flask는 모듈화 및 유연한 구조로 웹 애플리케이션을 구축할 수 있게 해주는 강력한 파이썬 웹 프레임워크입니다. 하지만 Flask 자체는 웹 서버를 실행하는 기능을 가지고 있지 않으므로 WSGI 서버와 함께 사용해야 합니다. WSGI 서버는 Flask 애플리케이션을 웹 상에서 실행할 수 있도록 해주는 역할을 합니다. Gunicorn, uWSGI, mod_wsgi 등의 다양한 WSGI 서버를 사용할 수 있으며, Flask 애플리케이션을 해당 WSGI 서버에 연결하여 실행할 수 있습니다.