본문 바로가기
취미부자/취미1_코딩

패스트캠퍼스 챌린지 26일차 / flask 기초

by 연습중인최 2021. 11. 26.
반응형


--오늘의 학습 범위--

 

Part 10. Flask 기초 / Ch 02. 플라스크 기초

CH02_05. 플라스크 리퀘스트 후크와 어플리케이션 컨텍스트


리퀘스트 훅이란?

 

:  리퀘스트가 발생했을 때 리퀘스트 전 후의 이벤트 트리거링을 통해서 컨트롤 할 수 있다

예> 리퀘스트 전에는 항상 유저 세션을 체크한다.

      리퀘스트 후에는 항상 데이터 베이스 세션을 닫는다.

----->  유용한 기능이고 많이 사용 함

 

애플리케이션 컨텍스트 

: - 자주 사용하는 앱 컨텍스트에는  g current_app이 있음.

  - 요청이 시작되고 요청이 끝날 때 동일한 수명 주기를 갖는다.

  g : (global) 리퀘스트가 발생했을 때 요청 안에서 자원을 관리하는 용도로 사용된다. 

       각각의 리퀘스트 내에서만 유효한 값이면서 로컬 변수임. /

       로컬 스레드란: 리퀘스트들끼리 서로 공유 할 수 없음 /

       리퀘스트는 각각의 분리된 환경일 것이고 리퀘스트 안에서만 사용할 수 있다.

 

current_app :  활성화된 어플리케이션을 위한 인스턴스

                   앱에 접근할 때 편리하게 쓰라고 만든 것 /

                   app인스턴스를 import하지 않고도, app의 config정보 조회 할 수 있음. 

                   앱과의 연결고리/ current_app이 앱 인스턴스를 바라본다.


설명보다 직접 써보면서 익히는 것이 최고! 플라스크 공식문서를 보고 따라해보며 이것저것 오류를 겪어보는 것이 

공부가 될 것 같다.


- 맨 첫 리퀘스트 훅


 -매 리퀘스트 전에 훅


 -매 리퀘스트 후에 훅


 -매 리퀘스트 종료시 훅


 -매 컨텍스트 제거시 훅


 -g, current_app 사용해보기

 

<실습코드>

먼저 윗단에서 추가하고

 @app.route('/')
    def index():
         app.Logger.info('RUN HELLO WORLD')      ##추가
         return 'Hello, World!'
   ... Request Hook ...

     from flask import g, current_app

     @app.before_first_request
     def before_first_request():
          app.Logger.info('BEFORE_FIRST_REQUEST')     # 리퀘스트 최초(맨처음) 실행
                                                      # 화면 고침(리프레시)하면 안뜸

     @app.before_request
     def before_request():
          g.test=true
          app.Logger.info('BEFORE_REQUEST')           #   

     @app.after_request
     def after_request():
          app.Logger.info(f'g.test:{g.test}')
          app.Logger.info(f'current_app.config:{current_app.config}')
          app.Logger.info('AFTER_REQUEST')          
     return reponse                                  # after_request은 인자를 받는다.

     @app.teardown__request
     def teardown__request(excepotion):              #excepotion을 받는다.
          app.Logger.info('TEARDOWN_REQUEST')

     @app.teardown_appcontext
     def teardown_appcontext(excepotion): 
          app.Logger.info('TEARDOWN_CONTEXT')

     



     return app

 

 

 

link : 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

반응형

댓글