Couldn't load this page.

← ブログ
Engineering

Pythonアプリのホスティング: Django、Flask、FastAPI をデプロイ

Yura Oak
Yura Oak2026年8月21日

Pythonアプリのホスティングは、まずアプリケーションの実行に必要なプロセスから考えます。 Django と Flask は一般に WSGI サーバーを使います。FastAPI は ASGI サーバーを使います。Celery ワーカーやスケジュール実行されるスクリプトは別のライフサイクルを持ちます。そうしたプロセス、データベース、アプリに必要なストレージをサポートするホストを選んでください。

Lizard がこのガイドを公開しています。リンク先のフレームワークおよびプロバイダーのドキュメントは 2026年9月9日 に確認しました。例では明示的なモジュール名を使っているため、あなたのプロジェクトに合わせて変更する必要があります。

ホストより先にランタイムを選ぶ

アプリケーション本番プロセス確認すべきその他の要件
WSGI を使う DjangoGunicorn または対応する別の WSGI サーバーデータベース、マイグレーション、静的ファイル、アップロード
非同期機能を使う Django対応する ASGI サーバー接続処理とアプリ依存関係の互換性
Flask本番向け WSGI サーバーアプリの import パスまたは factory、シークレット、データベース
FastAPIUvicorn または別の ASGI サーバー起動タスク、並行性、データベース接続
Celery ワーカー個別のキューコンシューマーブローカー、使用する場合は result backend、リトライ、シャットダウン
スクリプトまたはバッチジョブ実行して終了するプロセススケジュール、タイムアウト、終了ステータス、永続的な出力

開発サーバーは開発用です。公式の Django デプロイガイドFlask 本番ガイドFastAPI ワーカーガイダンス を参照してください。

用途別の Python ホスティング選択肢

Host検討する理由選ぶ前に確認すること
Lizardマネージドデータサービスと CLI 操作を備えた Web サービスとワーカーランタイム設定、データベース接続、実測のリソース使用量
Railway1 つのプロジェクト内で複数のサービスを使えるすべてのサービス消費量とプランクレジット
Render公開されている Web およびワーカーのインスタンスプラン別途かかるデータベース費用と無料サービスの制限
PythonAnywherePython に特化したホスティングワークフローあなたのプランでの WSGI/ASGI サポート、外向きアクセス、タスク制限
Cloud RunHTTP サービス、ジョブ、またはワーカープールリソース種別、課金モード、並行性、コールドスタート
Fly.io選択したリージョンの Machinesマシンサイズ、ストレージ、ネットワーク料金
DigitalOcean App Platformマネージドなソースまたはイメージのデプロイビルドサポート、アプリコンポーネント、データベース料金
Herokuなじみのある Python デプロイワークフロー現在のプラン、アドオン、製品の方向性
A VPSサーバーを直接制御できる更新、プロセス管理、TLS、バックアップ、復旧

より広いホスティングの判断には PaaS 比較 を使ってください。機能表に Python のバッジがあるだけでは、ワーカーやデータベースのサポートを確認したことにはなりません。

無料の Python ホスティングにはワークロード制限が必要です

無料プランでは、外向きリクエストの制限、非アクティブな Web プロセスのスリープ、タスク実行の制限、または試用クレジットのみの提供がある場合があります。そうした条件はデモには適していても、Webhook 受信やキューワーカーには不向きなことがあります。

Render の無料サービス規則PythonAnywhere の無料アカウント機能 を確認してください。Cloud Run については、料金ページ に無料利用枠と課金対象リソースの両方が説明されています。データベース、イメージレジストリ、またはネットワーク使用量は、見ている無料枠の外にある可能性があります。

静かな期間の後の最初のリクエストをテストし、スケジュール実行やバックグラウンド処理が引き続き動くか確認してください。無料オプションは無制限ホスティングとしてではなく、そうした制限の観点で説明してください。

ビルドコマンドと起動コマンド

requirements.txt を使うプロジェクトでは、固定された依存関係を次でインストールします。

python -m pip install -r requirements.txt

リポジトリですでに uv、Poetry、または別のツールを使っているなら、そのパッケージマネージャーと lockfile を使ってください。本番サーバーを依存関係に含めてください。自分のノート PC にだけインストールされたパッケージに依存しないでください。

myproject/wsgi.py がアプリケーションを定義している Django では:

gunicorn myproject.wsgi:application --bind "0.0.0.0:${PORT:-3000}"

app.pyapp を export している Flask では:

gunicorn app:app --bind "0.0.0.0:${PORT:-3000}"

main.pyapp を export している FastAPI では:

uvicorn main:app --host 0.0.0.0 --port "${PORT:-3000}"

これらのコマンドは、シェルがポート変数を展開することを前提にしています。JSON 配列の Docker CMD では自動的に展開されません。ランタイムで文書化された変数サポート、シェルラッパー、または環境を読み取る小さなプログラムのいずれかを使ってください。

ワーカー数は実測値と使用可能メモリに基づいて設定してください。プロセスを増やすとメモリとデータベース接続の使用量が増えることがあります。ワーカーを増やすことは、遅いクエリやブロッキングタスクの確認の代わりにはなりません。

最小限の FastAPI コンテナ

main.py を持ち、FastAPI と Uvicorn を含む固定済み requirements.txt を使うアプリケーションでは、この Dockerfile は 1 つのサーバープロセスを起動します。

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN useradd --create-home appuser
USER appuser
EXPOSE 3000
CMD ["sh", "-c", "exec uvicorn main:app --host 0.0.0.0 --port ${PORT:-3000}"]

プロジェクトと互換性のある Python バージョンを選んでください。.env、ローカル仮想環境、キャッシュ、Git データは .dockerignore に入れてください。この例では追加の OS パッケージはインストールしません。依存関係に必要なものだけを追加してください。

Lizard では、Dockerfile を持ち込むことも、ソースビルド方式を使うこともできます。デプロイガイド に選択肢の説明があります。アプリは小さなヘルスエンドポイントを公開し、実際の依存関係を使うエンドポイントもテストするべきです。

Lizard で確認した FastAPI デプロイ

私たちの 公開 FastAPI 例 には、2026年9月9日 付けのデプロイ記録があります。テストでは commit df522c1 を使い、eu-west-lim-a で GitHub からビルドし、ポート 8000 と Procfile 内の Uvicorn 起動コマンドを使用しました。Python 3.13、FastAPI 0.141.1、Uvicorn 0.52.4 を使用しました。手動のビルドまたは起動のオーバーライドは設定していませんでした。

公開された確認記録 では、公開 HTTPS URL に対する 6 件の成功した確認が報告されています。

Request確認された結果
GET /healthHTTP 200 と {"status":"ok"}
GET /docsHTTP 200。API インターフェースは /openapi.json を使用
GET /openapi.jsonHTTP 200。スキーマに health と echo のルートを含む
JSON オブジェクトを付けた POST /echo同じオブジェクトで HTTP 200
JSON 配列を付けた POST /echo無効な body type に対して HTTP 422
GET /no-such-routeHTTP 404

稼働中の health エンドポイント を開く、API インターフェース を試す、または FastAPI デプロイガイド を参照してください。

これらの結果は、データベースを持たない小さなアプリのデプロイと HTTP の挙動を対象にしています。アップタイム、負荷容量、またはエンドツーエンドのデプロイ時間は測定していません。同じ記録には、11:48 UTC 時点の CLI 読み取りとして、メモリ約 0.034 GB、リソースコスト約 $0.00051/時間 が示されています。これはある一時点の読み取りであり、月次請求額ではありません。引用した読み取りは、その時点で有効だった料金を使っています。現在の Lizard ホスティングは月額サブスクリプションなしの pay as you go を採用しています。ストレージ、トラフィック、決済手数料が合計に加わる場合があります。上の Dockerfile は別個の例であり、そのデプロイの正確な構成を再現するものではありません。

Django、Postgres、Celery には個別の確認が必要です

Django 設定が読み取る変数を通じて Managed Postgres を接続してください。マイグレーションは、各 Web ワーカーで個別にではなく、制御されたリリース手順として実行してください。静的ファイル処理を設定し、アップロードファイルには永続的なストレージを与えてください。

Celery は、関連する同じアプリケーションコードと専用の起動コマンドを持つ別サービスとして実行してください。ブローカーは明示的に設定してください。たとえば、アプリケーションが Redis を使うなら Managed Redis を使います。本番ワークロードを受け入れる前に、リトライ、重複タスク処理、シャットダウンを確認してください。

自分で運用するサーバーについては Django VPS ウォークスルー を、マネージドワーカーについては ワーカーデプロイリファレンス を参照してください。

Python アプリケーション全体を見積もる

Web プロセス、ワーカー、データベース、保存ファイル、バックアップ、転送、そしてチームに必要なプランを含めてください。Railway は消費量を計測し、有料プランを使用量に充当します。Render はインスタンスプランを公開しています。PythonAnywhere は現在 Developer を $10/month で掲載しています。含まれる機能がアプリに合うか確認してください。出典: RailwayRenderPythonAnywhere

Lizard には月額サブスクリプションもサービスごとのプラン料金もありません。平均 0.01 vCPU、0.1 GB メモリを 720 時間使用し、egress が 10 GB の小規模アプリでは、リソース料金は決済手数料と税抜きで合計約 $1.53 です。Python アプリに必要なデータベース、ワーカー、ストレージを加算してください。試算例現在の料金 を参照してください。購入したクレジットは失効しないため、静かな月でも別のプランを買う必要はありません。

FAQ

FastAPI は Django と同じサービスでホストできますか? 多くの場合は可能ですが、FastAPI には ASGI サーバーが必要です。ホストが、アプリで使う起動コマンドや長時間接続、ワーカーをサポートしていることを確認してください。

本番環境で runserver を使うべきですか? いいえ。本番向け WSGI または ASGI サーバーを使い、フレームワークのデプロイガイダンスを確認してください。

ホストでアプリが unhealthy と表示されるのはなぜですか? ビルドログ、プロセス終了ステータス、import パス、バインドされたインターフェース、想定ポートを確認してください。その後で、足りない変数や依存サービスとの接続を確認してください。

Dockerfile は必要ですか? どのホストでも必要というわけではありません。ソースビルダーがイメージを作成できる場合もありますが、それでも正しい依存関係と本番用の起動コマンドは必要です。

Python ワーカーに最適なホストは何ですか? そのワーカーのライフサイクルと依存関係をサポートするものです。キュー消費、リトライ、再起動時の挙動をテストしてください。HTTP 専用のデプロイだけでは不十分です。

AI で構築。Lizard で公開。

本番公開にプラットフォームチームは必要ありません。クラウド全体が、1 つの CLI コマンドですぐ使えます。

無料で試す
ワークスペース
サービス
アドオン
デプロイ

当サイトでは、サイトの基本機能と分析のために Cookie を使用しています。詳細は Cookie ポリシー.