2016-08-16 8 views
6

uWSGIとNginxでFlaskを設定するのは非常に難しく、ビルドアウトスクリプトでさえかなりの時間がかかり、後で再生する命令に記録する必要があります。Flaskアプリケーションを提供するためにWSGIサーバーとHTTPサーバーが必要ですか?

サーバーに大きな負荷がかからない(一般公開されていない)場合は、uWSGIなしで実行するのは理にかなっていますか? (フラスコはポートを聞くことができます。Nginxはリクエストを転送することができますか?)

Nginxを使用しないでポートにベアフラスコアプリを実行するだけですか?

+0

Tornadoは非常に軽量のPythonサーバーで、私はdev環境で実行します。しかし、あなたはそれを調べたいかもしれません。とにかくサービスが隠されていると、inbuild devサーバを実行しているときに問題が発生することはありませんが、開発中に遅れを経験しました。それは安定していない可能性があります。 – Hannes

+3

WSGIアプリケーションを実行するためにTornadoを使用しないでください。彼ら自身のドキュメンテーションはそれに対して警告します。 – davidism

+0

ああ、知っておいてよかった。私は推測する。しかし、それで開発者に問題はなかった。 docsを見てみる... :) – Hannes

答えて

7

Flaskを実行すると、Werkzeugの開発WSGIサーバーが実際に実行され、FlaskアプリケーションがWSGI呼び出し可能として渡されます。

開発サーバーは本番環境での使用を目的としたものではありません。特に効率的、安定的、または安全であるようには設計されていません。

Werkzeug開発サーバーを、どこにアプリケーションを提供するかにかかわらず、本番環境に移行する際には、GunicornやuWSGIなどの実稼働環境のWSGIサーバーに置き換えてください。


「私はWebサーバーを使用する必要がありますか?」という回答は似ています。 WSGIサーバはHTTPサーバを持っていますが、専用のプロダクションHTTPサーバ(Nginx、Apacheなど)ほど良くはありません。


Flask documentsさまざまな方法で展開する方法。多くのホスティングプロバイダには、PythonまたはFlaskのデプロイに関するドキュメントもあります。

1

は、おそらくあなたはすでにフラスコアプリのオブジェクトと設定ルートを持っていますが、あなたは、このようなアプリを作成する場合:

import flask 

app = flask.Flask(__name__) 

は、あなたの@app.route()秒を設定して、アプリを起動したい場合:

import gevent 

app_server = gevent.wsgi.WSGIServer((host, port), app) 
app_server.serve_forever() 

次に、アプリケーションを実行するには、gunicornまたはuWSGIなどにあなたのために実行する必要があります。

私は、フラスコのユーティリティがWebアプリケーション(REST APIサービス)を構築することを望んでいたが、他のフラスコ以外の非ウェブサービス要素とフラスコを構成することができないことが判明した。私は最終的にgevent.wsgi.WSGIServerを見つけました。 app_server.serve_forever()を呼び出した後、アプリケーションを終了したいときはapp_server.stop()に電話をかけることができます。

私のアプリケーションでは、localhost:フラスコとgeventを使用してリッスンしています。そして、別のポートでnginxリバースプロキシHTTPSリクエストを持って、localhostのフラスコサービスに転送します。

+0

だから、まだwsgiサーバーを使用していますか?あなたはgeentのサーバを走らせることは、gunicornやuwsgiを走らせることとは違うと言いますが、そうではありません。そして、両方のプログラムをプログラムで実行することもできます。 – davidism

+0

私は参照してください。はい、geventのWSGIServerはまだWSGIServerですが、私がデーモンからプログラムで実行する方法を見つけたのは唯一のものです(OPは、Flaskアプリケーションを実行するための設定がどれほど複雑であるかを特に喜んでいました他のWSGIサーバー下で)。その情報が些細なものではないと思っても、gunicornとuwsgiのWSGIサーバーをこの方法で実行することができて嬉しいです。 –

関連する問題