ゆとり世代の自由研究

勉強が一生終わりません

WebSocketとは

参考web: https://ginga-sys.jp/blog/websocket-http/#:~:text=WebSocket%E3%81%AF%E3%80%81%E3%82%A6%E3%82%A7%E3%83%96%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C,%E9%80%81%E5%8F%97%E4%BF%A1%E3%82%92%E5%8F%AF%E8%83%BD%E3%81%AB%E3%81%97%E3%81%BE%E3%81%99%E3%80%82

WebSocketは、ウェブアプリケーションがサーバーとブラウザ間でリアルタイムの双方向通信を行うための技術標準。 このプロトコルは、単一の長期間開かれた接続を通じて、データの片道または双方向の即時送受信を可能にする。 オーバーヘッドが大幅に削減され、データの即時性が向上。 この特性は、チャットアプリケーションやオンラインゲームなど、リアルタイム性が求められるアプリケーションにとって理想的。

HTTP: クライアントからサーバーへのリクエスト/レスポンスモデル。クライアントがリクエストを送信し、サーバーがそれに対してレスポンスを返す形式です。各リクエスト後、接続は閉じられる。 WebSocket: クライアントとサーバー間で「ハンドシェイク」と呼ばれる一度の接続確立プロセスを行った後、その接続は開いたまま保持され、両方向のデータ送受信が可能になる。

HTTP: 通常、リクエストごとに新しい接続が開かれ、レスポンスが送信された後に閉じられる。 WebSocket: 最初のハンドシェイク後、接続は明示的に閉じられるまで開いたまま。

FlaskのBlueprint

Blueprintの基本コンセプト

 blueprintがアプリケーション(Flaskインスタンス)に登録された場合に
実行する操作(operation)を記録しておくことです。
 Flaskは、リクエストを振り分ける(dispatching)ときや、
あるエンドポイントから別のエンドポイントへのURLを生成するときに、
view関数をblueprintと関連付けます

Blueprintサンプル

from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound

simple_page = Blueprint('simple_page', __name__,
                        template_folder='templates')

@simple_page.route('/', defaults={'page': 'index'})
@simple_page.route('/<page>')
def show(page):
    try:
        return render_template(f'pages/{page}.html')
    except TemplateNotFound:
        abort(404)

Blueprintの登録

from flask import Flask
from yourapplication.simple_page import simple_page

app = Flask(__name__)
app.register_blueprint(simple_page)

Flaskの設定

Flaskの設定

Flaskのconfigurationで設定する内容は、
デバッグモードの切り替え、secret keyの設定、
その他の環境固有なものです。

設定の基本

app = Flask(__name__)
app.config['TESTING'] = True

下記の書き方も同じ意味です。

app.testing = True

組み込みの設定値

  • DEBUG
    デバッグモードを有効にする。
    コードが変更されたときは、再読み込みされるようになる。
  • TESTING
    テストモードを有効にする。
    例外が発生したとき、appのエラーハンドラで処理させる代わりに、
    影響を伝搬させるようにする。
  • SECRET_KEY
    セッションのクッキーを安全に署名するために使用され、
    さらに自分のアプリケーションやFlask拡張が必要とする、
    その他のあらゆるセキュリティに関する用途で使用されるsecret key。

pythonファイルからの読み取り

app = Flask(__name__)
app.config.from_object('yourapplication.default_settings')
app.config.from_envvar('YOURAPPLICATION_SETTINGS')

Flaskの基本

Flask

 pythonでwebアプリをつくるためにFlaskを調査しました。

仮想環境の構築

 最初に作成したいフォルダに仮想環境を構築します。

$ python -m venv venv

 起動方法

$ venv\Scripts\activat

 終了方法

$ deactivate

Flaskのインストール

$ pip install Flask

その他のライブラリインストール

 エラーが発生したので追加しました。

$ pip install arrow
$ pip install ipython
$ pip install ipywidgets
$ pip install psutil 
$ pip install pyarrow

Hello World アプリケーション

 ファイル名はhello.py。flask.pyはエラーになるので使用禁止。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"
  1. 最初にFlaskクラスをimport。このクラスのインスタンスWSGI(Web Server Gateway Interface)アプリケーションです。
  2. 次に、Flaskクラスのインスタンスを作成します。最初の引数はアプリケーションのモジュールまたはパッケージの名前で、nameがショートカットとして機能します。これはテンプレート、静的ファイルなどのリソースを探す場所をFlaskが知るために必要になります。
  3. それからroute()デコレータを使って、どのURLが関数のトリガーかをFlaskに伝えます。
  4. その関数はユーザのブラウザで表示したいメッセージを返します。標準のコンテント・タイプはHTMLです。

Flaskの起動

 公式docsにはflaskコマンドが記載してありますが、環境変数の設定が不明だったのでpythonコマンドで起動。hello.pyを起動します。

$ python -m flask --app hello run

 デバッグモードだと、サーバー起動しながら編集できます。
 ブラウザの更新ボタンで反映されます。

$ python -m flask --app hello --debug run

ブラウザ表示

 http://127.0.0.1:5000/でブラウザ表示されます。
 サーバー停止はcrtl+cです。