はじめに
本記事では、Python製のASGIサーバー「Uvicorn(ユビコーン)」に関して、基本的な役割やログ出力の読み方を整理します。
FastAPIやStarletteといったASGIアプリケーションと組み合わせて使われることが多く、現代的なPython Webアプリケーションの土台として広く利用されています。
「ログに何かエラーが出ているのでは?」と思ったときに冷静に確認できるよう、実際の起動ログをもとに解説していきます。
Uvicornとは?
Uvicornは、ASGI(Asynchronous Server Gateway Interface)仕様に基づいて動作する軽量・高速なWebサーバーです。
WSGI(FlaskやDjangoの従来の仕組み)と比較して非同期処理に強く、リアルタイムなアプリケーション(チャット、WebSocketなど)に適しています。
主な特徴
- 非同期対応(async/await を活かした処理が可能)
- 軽量かつ高速なサーバー
- HTTP/1.1, WebSocket サポート
- FastAPI や Starlette と相性が良い
Uvicorn は、uvicorn main:app --host 0.0.0.0 --port 8000
のようなコマンドで起動し、Pythonコード内の ASGI アプリケーションを Webサーバーとして立ち上げます。
起動ログの読み解き
以下は、ある FastAPI アプリケーションを Uvicorn で起動したときのログです。
2025-04-24T22:50:36.648+09:00
INFO: Started server process [1]
2025-04-24T22:50:36.648+09:00
INFO: Waiting for application startup.
2025-04-24T22:50:36.649+09:00
INFO: Application startup complete.
2025-04-24T22:50:36.652+09:00
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
各行の意味
-
Started server process [1]
→ PID(プロセスID)1番でUvicornサーバープロセスが起動したことを示します。 -
Waiting for application startup.
→ FastAPIなどのアプリケーションの初期化を待っている状態です。 -
Application startup complete.
→ アプリケーションが無事に起動したことを意味します。 -
Uvicorn running on http://0.0.0.0:8000
→ サーバーがポート8000番でリッスンしており、外部からのアクセスを受け付ける準備ができた状態です。
補足:0.0.0.0 とは?
0.0.0.0
は「全てのネットワークインターフェースからの接続を許可する」ことを意味します。
たとえば、FargateやDockerなどでホストされる場合、この設定がないと ALB や他の外部リクエストを受けられないことがあります。
結論:このログにエラーはない
冒頭のログはすべて INFO
レベルであり、エラーや警告は一切含まれていません。
そのため、このログが表示されている限りは、アプリケーションとUvicornサーバーは正常に起動していると判断できます。
まとめ
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです...!
以下、簡単なメモとなります。
- Uvicorn は FastAPI などの ASGI アプリケーションを起動する軽量サーバー。
- ログに含まれる
INFO
メッセージは通常動作を示しており、エラーではない。 -
http://0.0.0.0:8000
の表記は「すべてのインターフェースで待ち受け中」であり、クラウド環境でも重要な設定。