[파이썬] Flask에서의 글로벌 컨텍스트

Flask는 파이썬으로 작성된 웹 프레임워크로, 글로벌 컨텍스트(global context)를 활용하여 애플리케이션 전역에서 사용되는 변수나 객체를 관리할 수 있습니다. 글로벌 컨텍스트는 애플리케이션 실행 중에 공유되며, 요청과 관련된 정보를 저장하거나 다른 모듈에서 전역적으로 접근할 수 있는 데이터를 관리하는 데 유용합니다.

Flask의 글로벌 컨텍스트 종류

Flask에서는 두 개의 주요한 글로벌 컨텍스트를 제공합니다.

1. 애플리케이션 컨텍스트(Application Context)

애플리케이션 컨텍스트는 Flask 애플리케이션의 인스턴스에 대한 상태를 저장하는 데 사용됩니다. 이 컨텍스트를 통해 애플리케이션의 설정, 데이터베이스 연결 등과 같은 전역적으로 활용되는 데이터를 관리할 수 있습니다. 애플리케이션 컨텍스트는 current_app 객체로 접근할 수 있습니다.

from flask import current_app

# 애플리케이션 컨텍스트에서 설정 값 가져오기
secret_key = current_app.config['SECRET_KEY']

2. 요청 컨텍스트(Request Context)

요청 컨텍스트는 HTTP 요청이 처리되는 동안에만 존재하는 컨텍스트로, 이를 통해 요청과 관련된 데이터를 저장하거나 다른 모듈에서 접근할 수 있습니다. 요청 컨텍스트는 request 객체로 접근할 수 있습니다.

from flask import request

# 요청 컨텍스트에서 HTTP 메서드 가져오기
http_method = request.method

글로벌 컨텍스트 활용 예제

다음은 Flask 애플리케이션에서 글로벌 컨텍스트를 사용하는 간단한 예제입니다.

from flask import Flask, current_app, request

app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecretkey'

@app.route('/')
def index():
    # 애플리케이션 컨텍스트에서 설정 값을 가져오기
    secret_key = current_app.config['SECRET_KEY']
    
    # 요청 컨텍스트에서 HTTP 메서드 가져오기
    http_method = request.method
    
    return f"Secret key: {secret_key}, HTTP method: {http_method}"

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

위 예제에서 / 경로로 요청이 들어오면 애플리케이션 컨텍스트에서 설정된 시크릿 키와 요청 컨텍스트에서 HTTP 메서드를 가져와 클라이언트에게 반환합니다.

Flask의 글로벌 컨텍스트를 활용하면 애플리케이션 전역에서 사용되는 데이터를 효율적으로 관리할 수 있으며, 다른 모듈 간의 데이터 공유 역시 용이해집니다. Flask 개발 시에는 글로벌 컨텍스트의 활용에 유의하여 보다 효율적이고 구조적인 애플리케이션을 개발해보세요.