FlaskプラグインをPyCharm Community Editionにインストールしました。この単純なコードをflask app:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello!</h1>'
if __name__ == "__main__":
app.run(debug=True)
そして私はこのメッセージを受け取ります:
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead
* Restarting with stat
* Debugger is active!
* Debugger PIN: 123-456-789
* Running on http://127.0.0.1:5000/
Flaskを実行するとこのエラーが発生するのはなぜですか?
以前のバージョンのメッセージには、「本番環境では開発サーバーを使用しないでください」と書かれていました。
開発モードで実行していることを開発サーバーに伝えない限り、本番環境で使用していると想定し、警告しないようにします。 開発サーバーは本番環境での使用を目的としたものではありません。特に効率的、安定、または安全になるように設計されていません。
FLASK_ENV
環境変数をdevelopment
に設定して、開発モードを有効にします。
export FLASK_ENV=development
flask run
PyCharm(またはおそらく他のIDE)で実行している場合は、実行構成で環境変数を設定できます。
開発モードでは、デフォルトでデバッガーとリローダーが有効になります。これらが必要ない場合は、run
コマンドに--no-debugger
または--no-reloader
を渡します。
ただし、この警告は単なる警告であり、アプリの実行を妨げるエラーではありません。アプリが機能していない場合は、コードに何か問題があります。
公式チュートリアルでは、アプリを本番環境にデプロイする方法について説明しています。 1つのオプションは、本番用WSGIサーバーであるウェイトレスを使用することです。その他のサーバーには、GunicornとuWSGIがあります。
開発ではなく公開で実行する場合は、組み込みの開発サーバー(_
flask run
_)を使用しないでください。開発サーバーは便宜上Werkzeugによって提供されますが、特に効率的、安定、または安全であるようには設計されていません。代わりに、本番WSGIサーバーを使用してください。たとえば、ウェイトレスを使用するには、まず仮想環境にインストールします。
_$ pip install waitress
_ウェイトレスにアプリケーションについて伝える必要がありますが、それは_
FLASK_APP
_を使用しませんflask runはそうします。アプリケーションを取得するには、アプリケーションファクトリをインポートして呼び出すように指示する必要がありますオブジェクト。_$ waitress-serve --call 'flaskr:create_app' Serving on http://0.0.0.0:8080
_
または、CLIコマンドを使用する代わりに、コードでwaitress.serve()
を使用できます。
_from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<h1>Hello!</h1>"
if __name__ == "__main__":
from waitress import serve
serve(app, Host="0.0.0.0", port=8080)
_
_$ python hello.py
_