기본 앱이 app.py인 건 가독성이 그리 좋지 않다. 그래서 환경 변수를 활용해서 flask의 기본 앱명을 바꿔줄 수 있다.
khuda로 한 번 바꿔보자. 터미널에서 아래 명령어를 통해 바꿀 수 있다.
export FLASK_APP='khuda'
그 후 echo $FLASK_APP을 통해 환경변수를 확인하면 다음처럼 잘 출력된다.
ctrl+C를 눌러 서버를 종료하고, app.py파일의 이름을 khuda.py 파일로 바꾼 뒤 다시 Flask run을 통해 서버를 켜보자.
잘 실행된다!
말이 좀 이상한데, 우리는 기본 앱명을 khuda로 바꿨다.
이 말은 khuda.py가 기본 앱이라는 건 아니고, 디렉토리 내에서 khuda 모듈을 찾는다는 뜻이다.
그래서 khuda가 파이썬 스크립트가 아닌 폴더여도 실행이 가능하다!
백문에 불여일견, 한 번 해보자.
khuda 디렉토리를 만든다.
그 안에 __init__ 파일을 만들고 앱을 만드는 기본 스크립트를 넣어주자. 단, 아래처럼 넣어줘야 한다.
from flask import Flask
def create_app():
app = Flask(__name__)
@app.route('/')
def hello_world():
return "Hello World!"
return app
이렇게 init 함수가 객체를 반환하게끔 했다.
이 때 app 객체를 반환하는 create_app 함수를 애플리케이션 팩토리라고 한다.
create_app 외의 함수명을 주면 안된다. 이는 flask 내에서 정의된 것.
애플리케이션 팩토리를 활용하는 이유는, app 객체를 전역으로 생성했을 때 생기는 여러 문제점을 방지하기 위함이다.
이렇게 함으로써 각자 다른 설정의 app의 인스턴스를 굴릴 수 있다.