技術4課の前田(青)です。
ある検証の前準備としてCloud9上でFlaskアプリケーションを動かしたのですが、プレビューすることが出来ませんでした。 Flaskを初めて触ったこともあり少しハマったので対処方法を記載します。
対象
Flask初心者の方
事象
①フォルダ構成とFlaskアプリケーションのソースコードの内容は下記画像のような感じです。「app.py」を実行すると「Hello World」が表示されます。
②下記のコマンドを実行して、Flaskアプリケーションを動かします。
set FLASK_APP={Flaskソースコードの親フォルダまでのパス}/app.py flask run
③実行結果は下記のようになり、Flaskアプリケーションは問題なく動いているようです。
④メニューバーのPreview > Preview Running Applicationを押下して、プレビューを表示します。
⑤「Oops No application seems to be running here!」と表示されてしまい、アプリケーション実行結果が表示できません。
原因
Cloud9でpreviewするアプリケーションのポートは8080、8081、または 8082が使用できる必要があります。(参考:AWS Cloud9統合開発環境 (IDE)で実行中のアプリケーションをプレビュー - AWS Cloud9)
「flask run」をオプションなしで実行する場合、デフォルトではport 5000
で実行されるのでCloud9ではプレビュー出来ません。
解決策1
①下記コマンドのように「flask run」をport 8080
を指定して実行します。
flask run -p 8080
②実行結果は下記画像のようになり、Flaskアプリケーションがport 8080
で実行されます。
③プレビューを表示することが出来、画面に「Hello World」と表示されました!
解決策2
①app.pyに9行目、10行目のコードを追加します。
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello world' if __name__ == '__main__': app.run(port=8080)
②下記コマンドを実行します。
python {Flaskソースコードの親フォルダまでのパス}/app.py
③実行結果は下記画像のようになり、Flaskアプリケーションがport 8080
で実行されます。
④プレビューを表示することが出来、画面に「Hello World」と表示されました!
感想
さっさと公式ドキュメントを見ろという話だったのですが、結構ハマってしまったので今回筆をとりました。 同じようにハマっている方の一助となれば幸いです。