背景
サンプルアプリで、Flask から Quart になった
で、Debug mode って文字が見えたので、有効化しようとした記録
* Serving Quart app 'app'
* Debug mode: False
* Please use an ASGI server (e.g. Hypercorn) directly in production
* Running on http://localhost:50505 (CTRL + C to quit)
app.run(debug=true)
が一番楽そう
だったんだけど今回はこれは出来なかった為の調査
結論
-
提起のやつなら、環境変数で以下を設定すれば OK
QUART_DEBUG$Env:QUART_DEBUG = "True"
-
Class を用意して、Config に読み込む場合は以下な感じ
config patternclass Config: DEBUG = False TESTING = False SECRET_KEY = 'secret' class Development(Config): DEBUG = True class Production(Config): SECRET_KEY = 'an actually secret key' def create_app(mode='Development'): """In production create as app = create_app('Production')""" app = Quart(__name__) app.config.from_object(f"config.{mode}") return app
詳細は以下で
奮闘記録
Document 眺めて、お?これちゃうんと思った instance_relative_config
app = Quart(name, instance_relative_config=True)
instance フォルダーにおいて、なんか色々やれるのかと思ったら、 違った
これは、Git管理したくないSecretとかを、Quart管理外から読み込むオプションみたい
normal/debug 用の app を二重に用意して切り替えよう
いや、そこまでしたら無意味じゃん・・と突っ込みするレベル :p
config 設定パターンをみて、"Production", "Development" を切り替えようとして陥った話
下記のようにして・・と一瞬考えてしまった
app = create_app()
app_local = create_app(mode="Development")
powershell の実行時に、run() に引数渡そう
Start-Process -FilePath $venvPythonPath -ArgumentList "-m quart --app main:app run --port $port --host $hostname --reload" -Wait -NoNewWindow
powershell で渡せないか格闘したけれど、知識不足で敗退
.ps1 上で直接書いたらエラーの例
Error: No such command 'run(debug=true)'.
Error: Got unexpected extra argument (debug=True')
powershell で カスタム引数付けたらいけるんじゃね?と
そもそも、main:app 自体が引数なので、ダメだった・・
parser = argparse.ArgumentParser()
parser.add_argument(
"--running_mode", required=False, help="Development, Default: None(Production)"
)
args = parser.parse_args()
args.running_mode
print(args.running_mode)
あとがき
今回はドキュメントを見たけど、勘違いもあって嵌った。
ただ、Quart のソースも実際に見られるので、中身見ればいいじゃんって、コードを読んで環境変数に気付けたのだった。
教訓、毎度のことながら
- コードを読もう
- ドキュメントを読もう