app.run()とflask runを使う場合の設定方法を確認する
実行環境
- python : 3.10.6
- Flask : 2.2.2
- python-dotenv
ファイル構成
helloworld
├─ apps
| └─ helloworld.py
└ .flaskenv
実行するflask app
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
return redirect(url_for('helloworld'))
@app.route('/helloworld')
def helloworld():
return '''
<h3> Hello, World! </h3>
<p> Welcome to Flask WebApp World <p>
'''
app.run()を設定する
if __name__ == ('__main__'):
app.run(debug=True, host='0.0.0.0', port=5050)
設定項目
- helloworld.pyの最後に上記を記載し、pythonコマンドから直接ファイルを実行できるようにする
引数 | 内容 |
---|---|
debug=True | デバッグモードをオンにする |
host='0.0.0.0' | localhost以外からのアクセスが可能。実行すると開発WEBサーバのアドレスが指定される |
port=5050 | オープンするポートを指定 |
- その他にもreloadに関する設定項目もある
実行結果
$ python helloworld.py
* Serving Flask app 'helloworld'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:5050
* Running on http://172.16.10.101:5050
Press CTRL+C to quit
* Restarting with stat
* Debugger is active!
* Debugger PIN: 437-474-661
flask runを設定する
- python-dotenv をインストールしておく
- .env もしくは .flaskenv に設定内容記載する
FLASK_APP=apps.helloworld.py
FLASK_DEBUG=1
FLASK_RUN_HOST='0.0.0.0'
FLASK_RUN_PORT=5050
引数 | 内容 |
---|---|
FLASK_APP=apps.helloworld.py | helloworld.pyまでのルート記載。 /(スラッシュ)ではなく.(ドット)を使用する |
FLASK_DEBUG=1 | 「1」でデバッグーモード、「0」でプロダクションモード |
FLASK_RUN_HOST | localhost以外からのアクセスが可能。実行すると開発WEBサーバのアドレスが指定される (string) |
FLASK_RUN_PORT=5050 | オープンするポートを指定 (integer) |
-
FLASK_DEBUG=1ではなく、FLASK_ENV=development という記述でデバッグモードをオンする方法がウェブ上で散見されるが、Flask 2.3からはこの方法は廃止されるとのこと。
-
実行時に以下のメッセージが表示される
'FLASK_ENV' is deprecated and will not be used in Flask 2.3. Use 'FLASK_DEBUG' instead.(FLASK_ENV' は非推奨で、Flask 2.3 では使用されません。代わりに 'FLASK_DEBUG' を使ってください。) -
Release noteにも下記の記載あり
The FLASK_ENV environment variable and app.env attribute are deprecated, removing the distinction between development and debug mode. Debug mode should be controlled directly using the --debug option or app.run(debug=True). #4714
(FLASK_ENV環境変数とapp.env属性が廃止され、開発モードとデバッグモードの区別がなくなりました。デバッグモードは --debug オプションまたは app.run(debug=True) を使って直接制御する必要があります。#4714)
実行結果
$ flask run
* Serving Flask app 'apps.helloworld.py'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:5050
* Running on http://172.16.10.101:5050
Press CTRL+C to quit
* Restarting with stat
* Debugger is active!
* Debugger PIN: 437-474-661
結論
- app.run()とflask runは、どちらかに絞る必要はなく両方一緒に使える
- app.run() はアプリケーションのルートなどを考えなくて良い
- flask run はpython-dotenvを利用する