강의

멘토링

커뮤니티

Inflearn Community Q&A

formyjiny4347's profile image
formyjiny4347

asked

[Renewed] Introduction to Python Backend and Web Technologies for Beginners (Intermediate Python, Understanding Backend and Web Technology Basics with Flask) [Full Stack Part1-1]

flask Various Features: Various Decorators (Update)

섹션 8 flask 다양한 기능: 다양한 데코레이터 before_first_request 문의

Resolved

Written on

·

344

0

섹션 8 flask 다양한 기능: 다양한 데코레이터

3분 37초

flask_deco.py 파일 실행 시

AttributeError: 'Flask' object has no attribute 'before_first_request'. Did you mean: '_got_first_request'?

라고 에러가 뜹니다.

검색 해 보니 Flask는 2.2.x 이후로 'before_first_request'를 더 이상 사용하지 않는다고 합니다.

before_first_request 는 어떻게 대체가 되는건지... 정보 검색이 어렵습니다.

어떻게 하면 될까요? 도와주세요~

pythonrest-apiflask

Answer 3

0

funcoding님의 프로필 이미지
funcoding
Instructor

안녕하세요. 답변 도우미입니다.

이번 기회에 해당 영상도 새로 찍어서 업데이트하였고, 자료도 새로 다시 업데이트하여 업로드하였습니다.

관련 자료와 영상을 보시면 보다 선명히 이해하실 수 있으실 것 같습니다.

그래도 이슈가 있으시면 dream@fun-coding.org 로 메일로 가볍게 이야기해주시면 또 설명 드리겠습니다.

감사합니다.

HYO JIN Kim님의 프로필 이미지
HYO JIN Kim
Questioner

넵! 제가 주피터 노트북 파일을 잘 봤어야했는데...
내용 확인하였습니다.!
빠른 업데이트 감사합니다.!^^

0

funcoding님의 프로필 이미지
funcoding
Instructor

안녕하세요. 답변 도우미입니다.

말씀하신 부분 다시 확인해보니, 제가 드린 자료에 이미 상세히 버전별 가이드를 넣어놓았습니다. 수업자료에서 다음 강의시 함께 보시는 다음 주피터노트북 파일에 상세히 추가 설명과 예제를 넣어놓았습니다.

7_flask_others.ipynb

괜찮으시면 해당 자료를 꼭 확인해보시면 좋을 것 같습니다. 그래도 이슈가 있으시면 dream@fun-coding.org 로 메일로 가볍게 이야기해주시면 또 설명 드리겠습니다.

 

감사합니다.

0

funcoding님의 프로필 이미지
funcoding
Instructor

안녕하세요. 답변 도우미입니다.

우선 불편을 드려 죄송합니다. 관련 부분은 좀더 검토해서, 조만간 자료등으로 업데이트하겠습니다.

Flask 2.2.x 버전 이후로 before_first_request 데코레이터는 더 이상 지원되지 않으며, 해당 기능을 대체하기 위한 새로운 방식이 도입되었습니다. 이 문제를 해결하기 위해서는 기존의 before_first_request를 대체하는 방법을 사용해야 합니다.

before_first_request 대신 before_request를 사용하면 됩니다. before_request는 첫 번째 요청뿐만 아니라, 매 요청 전에 실행되기 때문에 이를 적절히 처리하여 첫 번째 요청에만 실행되도록 코드를 작성할 수 있습니다.

해결 방법:

기존 코드:

from flask import Flask
​
app = Flask(__name__)
​
@app.before_first_request
def initialize():
    print("이 함수는 첫 번째 요청 전에만 실행됩니다.")

대체 코드:

from flask import Flask
​
app = Flask(__name__)
​
# 첫 번째 요청 여부를 확인하기 위한 플래그를 사용
first_request_handled = False
​
@app.before_request
def initialize():
    global first_request_handled
    if not first_request_handled:
        print("이 함수는 첫 번째 요청 전에만 실행됩니다.")
        first_request_handled = True

설명:

  • before_request 데코레이터는 모든 요청 전에 실행됩니다.

  • first_request_handled 플래그를 사용하여 첫 번째 요청 시에만 로직이 실행되도록 제한합니다.

  • 첫 번째 요청이 처리되면 first_request_handledTrue로 변경하여 이후 요청에서는 실행되지 않도록 설정합니다.

이 방식으로 before_first_request와 동일한 기능을 구현할 수 있습니다.

감사합니다. 잔재미코딩 드림

formyjiny4347's profile image
formyjiny4347

asked

Ask a question