0
0

背景

サンプルアプリで、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 pattern
    class 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" を切り替えようとして陥った話

下記のようにして・・と一瞬考えてしまった :laughing:

main.py
app = create_app()
app_local = create_app(mode="Development")

powershell の実行時に、run() に引数渡そう

app.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
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 のソースも実際に見られるので、中身見ればいいじゃんって、コードを読んで環境変数に気付けたのだった。

教訓、毎度のことながら

  • コードを読もう
  • ドキュメントを読もう
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0