[flask] アプリケーションファクトリを作成してFlaskを起動
Flask本体の起動について、これまでは直接グローバルでFlaskインスタンスを作成する方法が行われていたところ、問題を引き起こす可能性がありました。
そのため、関数内でFlaskインスタンスが作成する方法が追加されました。 これをアプリケーションファクトリと呼びます。
そして、アプリケーションファクトリを作成し、flaskコマンドにてアプリケーションを起動する方法がバージョン1.0にて追加されました。
今回こちらの方法を実行してみます。
1)flaskのインストール
flaskがインストールされていなければ、pipでインストールします。
pip install Flask
2)アプリケーションファクトリ関数を作成
アプリケーションファクトリ関数を作成し、その中でFlaskインスタンスを作成します。
アプリケーション関数名はcreate_app
もしくはmake_app
とすることで、Flask起動時に自動で読み込まれます。
具体的に、本体のソースコードのこちらで自動で関数名を読み取りしています。
from flask import Flask
def create_app():
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World!'
return app
3)環境変数を設定
ファクトリ関数が存在するモジュール名をFLASK_APP環境変数にて指定します。
今回アプリケーションファクトリ関数はhello.pyに存在するので、helloと指定します。
export FLASK_APP=hello
4)アプリケーションを起動
最後に、flask runとすることでアプリケーションが起動します。
$ flask run
* Serving Flask app "hello"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)