0utputab1e

Pythonのフレームワーク「Flask」を使ってみる

 2020-07-03
 

この記事では、Pythonのフレームワーク「Flask」を使って、簡単なWebアプリを構築してみようと思います。

前提

  • python: 3系(筆者の環境は3.5.6)
    (過去の記事でインストール手順を紹介しています)
  • pip: 20.1.1
    (sudo apt install python-pipで入手可能。また別記事で詳細を書きたい)

※Python公式いわく、Pythonバージョン3.4以降には標準でpipが付属しているらしいです。
(参考: Python公式サイト(始めの方に書かれています))

pipでFlaskのインストール

$ pip install flask

 
上記のコマンドで、Flaskの実行に必要なライブラリがpip管理の下インストールされる。

※もとの環境の作り方によっては、コマンドの先頭に「sudo」を要求される場合もある。

コードを書いていく

ファイル名は何でもいいが、ここでは「hello.py」として作成し、実際にコードを書いていく。「Hello, world」とブラウザに出力するだけの最小構成で書いてみる。

from flask import Flask  

# Flaskアプリケーションの原型を作成
app = Flask(__name__)  

#↓これはURLパス「/」でアクセスしたとき実行される関数という意味
@app.route("/")
def main():
    #「Hello, world」を出力する
    return "Hello, world"

# このファイルが他のプログラムからではなく直接呼び出されたとき、  
# アプリケーションの起動に入る
if __name__=="__main__":
    # http://0.0.0.0:3000でサーバ起動(デバッグモード)
    app.run(debug=True, threaded=True, host="0.0.0.0", port=3000)  

※デバッグモードをサーバに適用すれば、コードの変更に伴ってライブリロード(自動で変更を反映)してくれる上、コードに誤りがあったときに便利なデバッガーが立ち上がる。

※デフォルトでアプリケーションのプロセスは、各リクエストを個別のスレッドで処理しないようになっていて、複数のリクエストを同時に処理することができないらしい(threaded=False)。

 
上記の理由から、HTTPリクエストの同時アクセスがあると、現在のリクエストの処理が終わるまで次の処理に待ちが発生してしまう。

そのため、app.run()のオプションで並列処理をオンにしている。

 
参考: 公式ドキュメント(run関数のところ)

アプリケーションを起動

hello.pyを作成したディレクトリに移動し、以下のコマンドでアプリケーションを起動する。

$ python hello.py  

このままブラウザから「http://0.0.0.0:3000」にアクセスしてみると、「Hello, world」の文字列が確認できる。

このアプリ構成のつづきは、また次回以降にしたいと思います。  
 
 
では、また!

 

あわせて読みたい記事

>> Homeに戻る