サーバーはFlaskにバンドルされており、実稼働環境での展開に安全ですか?そうでない場合は、Flaskを運用環境にデプロイするために何を使用すればよいですか?
いいえ。バンドルされたサーバーは、developmentサーバーです。実稼働環境を考慮して設計されていません。
os.system('rm -rf /')
と考えてください)。FlaskはWerkzeugの開発サーバーを使用しており、ドキュメントには同じことが記載されています。
開発サーバーは、実稼働システムで使用することを目的としていません。特に開発目的のために設計されており、高負荷下ではパフォーマンスが低下します。展開のセットアップについては、 Application Deployment ページをご覧ください。
推奨されるアプローチは、 実動WSGIサーバーを使用 を使用してFlaskアプリケーションを実行します。ドキュメントにはデプロイメント専用のセクションがあります。 デプロイメントオプション 。
アプリケーションのデプロイは、uWSGIやgunicornなどのWSGIサーバーをインストールし、Flaskの開発サーバーの代わりにそれを実行するだけです。
gunicorn -w 4 -b 127.0.0.1:4000 myproject:app
画像や動画などの静的アセットを提供している場合、低レベルのキャッシュが必要な場合、またはより高い同時実行要求がある場合は、 nginx のようなWebサーバーを使用して、すべてのリクエストを処理することをお勧めします。
くだらないASCII形式:
+----------+
| Client 2 |
+----------+
|
V
+----------+ +-------+ +----------+
| Client 1 |----->| nginx |<-----| Client 3 |
+----------+ +-------+ +----------+
^
|
V
/--------------------\
| useful nginx stuff |
| like asset serving |
| and rate limiting |
\--------------------/
|
V
+-------------+
| WSGI server |
+-------------+
実際にWSGIサーバープロセスをrunするには、 Supervisor を使用できます。何らかの理由で障害が発生した場合、サーバーを自動的に再起動し、ログを保持し、サーバーの起動時にサービスが開始されるようにデーモンとして実行します。
基本的にはありません。組み込みの開発サーバーは、実稼働環境での展開には安全ではありません。
ビルトインdevelopmentサーバーはまさにそのためのものです。本番環境で使用するには、詳細な手順の1つ here に従う必要があります。
これらには、WSGI仕様を実装するさまざまなサーバーが含まれます。たとえば、 Apache/mod_wsgi またはこれらのスタンドアロンwsgiサーバーのいずれか http://flask.pocoo.org/docs/deploying/wsgi -standalone /
軽量で使いやすい一方で、Flaskの組み込みサーバーは拡張性が低く、デフォルトでは一度に1つのリクエストのみを処理するため、実稼働には適していません。 http://flask.pocoo.org/docs/0.12/deploying/