はじめに
MH ソフトウェア & サービスが開発・公開している、Webアプリケーションサーバ AiRの便利かな?と思われるコードの紹介です。
Webアプリケーションサーバ AiRはPython、Tornado(Webフレームワーク、Webサーバ)、JavaScript、その他のモジュールで構成されています。
Tornadoを初期化する時、settingsに設定する値で、高速化・セキュリティの向上が望めます。
def __init__(self, hat: Hat):
"""Initialize.
:sig: (Hat) -> None
"""
handlers: tornado.routing._RuleList = self._handlers # type: ignore
settings: dict[str, Any] = self._settings # この値 propertyで呼び出されます
tornado.web.Application.__init__(
self,
handlers,
default_handler_class=Base,
**settings, # ここの値 propertyで呼び出された値です
)
@property
def _settings(self) -> dict[str, Any]:
"""Retrun settings.
:sig: () -> dict[str, Any]
"""
return {
"compress_response": True,
"""
レスポンスを自動的に圧縮するかどうかの設定
有効にすると、テキスト形式のレスポンスがgzip圧縮されます
"""
"cookie_secret": tornado.options.options.cookie_secret,
"""
署名付きクッキーを使用するための秘密鍵 クッキーの内容が改ざんされていない事を保証出来ます
"""
"login_url": "/",
"static_handler_class": StaticFileHandler,
"static_path": os.path.join(os.path.dirname(__file__), "."),
"template_path": os.path.join(os.path.dirname(__file__), "."),
"xsrf_cookies": True,
"""
クロスサイトリクエストフォージェリ(XSRFまたはCSRF)攻撃を防ぐための機能
これを有効にすると、各リクエストに対してXSRFトークンを検証し、トークンが一致しない場合はリクエストを拒否します
"""
}