Skip to main content

はじめに

  • この記事では、Python の WSGI HTTP サーバーである Gunicorn を使って、Flask、Django、その他の WSGI アプリケーションを本番環境で実行する方法を解説します。
  • はじめる前に、お使いの環境に Python と Gunicorn がインストールされていることを確認してください。Gunicorn は次のコマンドでインストールできます。
  • Square Cloud がほかの依存関係と一緒にインストールできるように、requirements.txt にも gunicorn を追加してください。
requirements.txt

基本的な使い方

Gunicorn を使って Python の Web アプリケーションを実行するには、flask や django などのフレームワークによる WSGI アプリケーションが必要です。
アプリケーションの準備ができたら、WSGI アプリケーションオブジェクトを含むモジュール名と変数名を把握しておく必要があります。
たとえば、app.py というファイルに Flask アプリケーションがあり、Flask インスタンスの名前が app の場合、次のコマンドで Gunicorn を使って実行できます。
このコマンドでは、
  • python -m gunicorn は Gunicorn を Python モジュールとして実行します。
  • --bind 0.0.0.0:80 は、すべてのネットワークインターフェースのポート 80 で待ち受けるよう Gunicorn に指示します。
  • app:app は、WSGI アプリケーションオブジェクトを含むモジュール名(app)と変数名(app)を指定します。
Django の場合は、Django がプロジェクトパッケージ内に作成する wsgi.py モジュールを Gunicorn に指定します (myproject はプロジェクト名に置き換えてください)。

Square Cloud での実行

Square Cloud が Gunicorn でアプリケーションを起動するように、このコマンドを設定ファイルの START フィールドに記述します。
squarecloud.app
Gunicorn は 0.0.0.0:80 にバインドする必要があります。Square Cloud はサブドメインへのトラフィックをアプリケーションのポート 80 に届けます。Square Cloud は環境変数 PORT も 80 に設定し、Gunicorn はこれを読み込みます。--bind オプションがない場合、PORT が設定されていれば 0.0.0.0:$PORT でリッスンします。

その他のオプション

Gunicorn には動作をカスタマイズするためのオプションがいくつか用意されています。ここではいくつかのオプションを紹介します。

Workers

  • --workers <number>
このオプションは、リクエストを処理するワーカープロセスの数を設定します。各ワーカーはアプリケーションのコピーをメモリ上に持つ独立したプロセスなので、Square Cloud では通常 CPU ではなく RAM が上限になります。まずは 2 ワーカーで始め、MEMORY を増やしてからワーカーを追加してください。アプリケーションが LACK_OF_RAM で停止する場合は、ワーカー数を減らしてください。
ワーカー数を multiprocessing.cpu_count() や (2 x $num_cores) + 1 の計算式で決めないでください。コンテナ内ではコア数がホストマシンのものになることがあり、数十個のワーカーが起動して RAM を使い果たしてしまいます。

Name

  • --name <name>
  • -n <name>
このオプションは、Gunicorn のプロセス名を設定します。

Worker-class

  • --worker-class <class>
  • -k <class>
このオプションは、使用するワーカーの種類を設定します。デフォルトは sync ですが、gevent、eventlet、tornado などのワーカータイプも使用できます。

その他

Gunicorn には、公式ドキュメント で確認できるさらに多くのオプションや機能があります。

設定ファイル

  • Gunicorn のオプションは、Python の設定ファイルで指定することもできます。Gunicorn は、実行したディレクトリ (Square Cloud ではプロジェクトのルート) にある gunicorn.conf.py という名前のファイルを自動的に読み込みます。それ以外のファイル名の場合は、-c <file> で指定してください。
gunicorn.conf.py
  • このファイルがプロジェクトにあれば、START フィールドは次のように短くできます。
squarecloud.app

次のステップ

Flask

Gunicorn の背後で Flask アプリケーションをデプロイします。

Django

Gunicorn の背後で Django プロジェクトをデプロイします。

アプリが起動しない

EADDRINUSE、LACK_OF_RAM などの起動エラーを修正します。

この記事は役に立ちましたか?

  • 私たちは可能な限り最良のサポートを提供するため、細心の注意を払ってこのコンテンツを作成しました。 この記事が少しでもお役に立ったなら、ぜひ私たちの活動を応援してください。すでに多くの開発者が Google と Trustpilot で Square Cloud に 402 件のレビューで 4.9/5 の評価をつけています。あなたのレビューもぜひ残してください。あなたにとって何が最も重要かを理解する助けになります。

Google レビュー

Google レビューにあなたのレビューを残してください。

Trustpilot

Trustpilot にあなたのレビューを残してください。