반응형

프로젝트 규모가 커질수록 문제가 발생할 확률이 높아집니다.

app 객체를 전역으로 사용할 때 발생하는 문제가 생기는데
예방하려면 애플리케이션 팩토리를 사용하라고 권합니다.

pybo.py파일을 pybo/__init__.py 파일로 대체하고 플라스크 서버를 실행해보겠습니다.

pybo라는 폴더를 생성해주고 기존의 pybo.py를 pybo/__init__.py로 옮기고 이름을 변경해봤습니다.

그리고 실행 시켰는데 아주 잘 실행됩니다.

 

우리는 저번에 FLASK_APP=pybo로 설정해놨기 때문에 c:\projects\myproject 에서 pybo.py를 찾을 수 있습니다.

만약 pybo.py가 아니라 pybo123로 cmd를 설정하고 pybo123으로 이름 바꾸면 또한 찾을 수 있습니다.

 

그리고 만약 pybo라는 파일이 없는데 폴더가 있는 경우 거기에서

기본적으로 __init__.py라는 파일을 실행(기본적으로 __init__.py가 default값)시켜주는 것입니다.

애플리케이션 팩토리를 사용해보도록 하겠습니다.

 

from flask import Flask

def create_app():
        app = Flask(__name__)
        @app.route('/')
        def heello_pybo():
            return 'Hello, Pybo!'
        return app

만약 app이라는 변수를 전역으로 사용할 경우 문제가 생길 수 있기 때문에 지역변수로 선언해 문제가 없게 합니다.

create_app 대신 다른 이름을 사용하면 정상 동작하지 않습니다. flask 내부 정의된 함수명입니다.

 

반응형