Flask

Flask – Request (Hook, Context)

Request Hook

  • Request Hook 이란?
    • 통신을 주고 받을 때 API를 통해 요청 및 응답을 하게 됩니다.
      이 때 requset hook는 요청 단계의 생명 주기에서 각 단계별 처리를 할 수 있게 해줍니다.
Request Hook 생명주기
  • before_first_request
    • 최초로 페이지 요청 전에만 실행
@app.before_first_request
def before_first_request():
    app.logger.info("BEFORE_FIRST_REQUEST")
  • before_request
    • 페이지 요청 전에 실행
@app.before_request
def before_request():
    app.logger.info("BEFORE_REQUEST")
  • after_request
    • 페이지 요청 후에 실행
@app.after_request
def after_request(response):
    app.logger.info("AFTER_REQUEST")
    return response # atfer_request의 경우 response 인자를 반환해야함
  • teardown_request
    • 페이지 요청 종료시 실행
@app.teardown_request
def teardown_request(exception):
    app.logger.info("TEARDOWN_REQUEST")
  • teardown_appcontext
    • 페이지 어플리케이션 컨텍스트 제거시 실행
@app.teardown_appcontext
def teardown_appcontext(exception): # application context가 끝날때
    app.logger.info("TEARDOWN_CONTEXT")

Request Context

  • Request Context 란?
    • request 시 관련 정보를 받는 용도
from flask import request
@app.route("/test/method/<id>", methods = ['GET', 'POST']) # default GET
def method_test(id):
    return jsonify({
        'request.method': request.method,
        'request.args': request.args,
        'request.form': request.form,
        'request.json': request.json,
    })

Application Context

  • g (global)
    • request 내에서만 값이 유효한 스레드 로컬 변수이므로 각 리퀘스트 내의 전역 변수
from flask import g

g.변수명 = 값
  • current_app
    • 활성화된 어플리케이션을 위한 인스턴스
    • app인스턴스를 import하지 않고도, app의 config 정보를 조회 가능
from flask import Flask, current_app

app = Flask(__name__)

app.logger.info(f'current_app.config:{current_app.config}')

참고 자료

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.