[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)
このエントリーをはてなブックマークに追加
Takatomo Honda avatar
About Takatomo Honda
システム開発 / プロトタイプ開発 / 開発組織の構築 / アプリケーションの内製化 /等、お気軽にご相談ください。