FlaskをuWSGIとNginxで設定するのは非常に難しく、ビルドアウトスクリプトを使用する場合でもかなり時間がかかり、後で再現するために指示に記録する必要があります。
サーバーに大きな負荷をかける予定がない場合(パブリックからは見えない)、uWSGIなしで実行するのは理にかなっていますか? (Flaskはポートをリッスンできます。Nginxはリクエストを転送できますか?)
Nginxさえ使用せず、単にポートでbare flask appを実行するのは理にかなっていますか?
「Flaskを実行」すると、実際にはWerkzeugの開発WSGIサーバーが実行され、FlaskアプリがWSGI呼び出し可能オブジェクトとして渡されます。
開発サーバーは、実稼働環境での使用を目的としていません。特に効率的、安定、または安全になるようには設計されていません。
アプリケーションがどこで利用可能になるかに関係なく、実稼働環境に移行する場合は、Werkzeug devサーバーをGunicornやuWSGIなどの実稼働環境に対応したWSGIサーバーに置き換えます。
答えは「Webサーバーを使用すべきか」についても同様です。 WSGIサーバーにはたまたまHTTPサーバーがありますが、専用の実稼働HTTPサーバー(Nginx、Apacheなど)ほど優れていません。
Flask documents さまざまな方法で展開する方法。多くのホスティングプロバイダーには、PythonまたはFlask。
おそらく、既にFlaskアプリオブジェクトとルートが設定されていますが、次のようなアプリを作成する場合:
_import flask
app = flask.Flask(__name__)
_
@app.route()
sを設定してから、アプリを起動したいとき:
_import gevent
app_server = gevent.wsgi.WSGIServer((Host, port), app)
app_server.serve_forever()
_
そうすれば、gunicornやuWSGIなどを実行するように指示するのではなく、アプリケーションを直接実行できます。
flaskのユーティリティを使用してWebアプリケーションを構築したい場合(REST APIサービス)があり、構成できないflask他の非フラスコ、非Webサービス要素で問題が発生しました。最終的に_gevent.wsgi.WSGIServer
_が見つかりましたが、それはまさに必要なものでした。app_server.serve_forever()
の呼び出し後、アプリケーションが終了したいときにapp_server.stop()
を呼び出すことができます。
私の展開では、アプリケーションはlocalhostでリッスンしています:flaskとgeventを使用し、nginxが別のポートでHTTPSリクエストをリバースプロキシして、flaskローカルホスト上のサービス。