タグ付けされた質問 「flask」

1
Flask.runよりもフラスコCLIが推奨されるのはなぜですか?
Flask 0.11では、flaskCLIが導入されました。docsとchangelogの両方に、これが推奨されています。 開発サーバーのドキュメント: Flask 0.11以降、開発サーバーを実行するための複数の組み込み方法があります。最良の方法は、フラスココマンドラインユーティリティですが、このFlask.run()方法を引き続き使用することもできます。 コマンドライン フラスコ、それは優れたリロード体験を提供するため、コマンドラインスクリプト(コマンドラインインタフェース)が強くにより、アプリケーションをロードする方法を開発することをお勧めします。基本的な使用方法は次のとおりです。 $ export FLASK_APP=my_application $ export FLASK_DEBUG=1 $ flask run 変更ログ: クリックCLIシステムを介してローカルデバッグサーバーを起動flaskするflask.cliモジュールが追加されました。これはflask.run()、異なる設計と置換のために、より速く、より信頼性の高い動作をするため、古い方法よりも推奨されますFlask-Script。 これまでのところ、この「優れたリロードエクスペリエンス」に気付きませんでした。カスタムスクリプトでCLIを使用する意味がわかりません。 を使用する場合Flask.run、私は単にPythonファイルを書くでしょう: #!/usr/bin/env python3 from my_app import app if __name__ == '__main__': app.run(debug=True) CLIを使用する場合、環境変数を指定する必要があります。CLIドキュメントでは、これactivateはvirtualenvwrapper のスクリプトに統合できると述べられています。個人的には、これはアプリケーションの一部であると考えており、バージョン管理下にあるべきだと思います。残念ながら、シェルスクリプトが必要です。 #!/usr/bin/env bash export FLASK_APP=my_app:app export FLASK_DEBUG=1 flask run もちろん、Windowsユーザーが共同作業を開始するとすぐに、追加のbatスクリプトが伴います。 また、最初のオプションでは、実際のアプリを起動する前にPythonで記述されたセットアップを許可します。 これにより、たとえば Pythonでコマンドライン引数を解析する アプリを実行する前にロギングをセットアップする 彼らは、カスタムコマンドを追加することが可能であると宣伝しているようです。オプションのエントリポイントを介して公開される単純なPythonスクリプトを記述するよりも、これが優れている理由がわかりません。 Python実行スクリプトを使用して構成されたロガーを使用する場合のロギング出力の例: $ ./run.py …
13 python  flask 

3
グローバルリクエストコンテキスト-アンチパターン?
今日、私の同僚とPython Webフレームワークとそれらについての印象について話していました。私は、Flaskがグローバルなリクエストを持っているのはひどく臭いで、アンチパターンだと彼に言った。 ドキュメントは、要求コンテキストについて言います: 対照的に、リクエストの処理中には、他にもいくつかのルールがあります。 要求がアクティブな間、コンテキストローカルオブジェクト(flask.requestなど)は現在の要求を指します。 コードはいつでもこれらのオブジェクトを保持できます。 アプリケーションをよりシンプルにするという、この設計決定の背後にある考え方を理解していると思います。Thread Localsの場合のように、これは単なる妥協です。 はい、通常、スレッドローカルを使用することはそれほど賢明な考えではありません。これらは、スレッドの概念に基づいていないサーバーに問題を引き起こし、大規模なアプリケーションの保守を困難にします。ただし、Flaskは大規模なアプリケーションや非同期サーバー向けに設計されたものではありません。Flaskは、従来のWebアプリケーションをすばやく簡単に記述できるようにしたいと考えています。 グローバルオブジェクトに現在の要求情報をパッチすることはアンチパターンですか? 静的コードアナライザーの観点ではグローバルステートであるため、そうではないと考えています。そして、プログラマーとしての私は、ドキュメントを注意深く読むことなく、それがどのように機能するかを理解しません。そして、これはテストに結果をもたらします。 ビューへの引数としてリクエストを渡すことは良い習慣ではありませんか?読みやすく、明示的で、デバッグが簡単だと思います。そして、グローバルな状態を回避します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.