FastAPI を使用して高性能の非同期 Web アプリケーションを構築する

PHPz
リリース: 2023-09-28 09:16:49
オリジナル
917 人が閲覧しました

FastAPI を使用して高性能の非同期 Web アプリケーションを構築する

FastAPI を使用して高パフォーマンスの非同期 Web アプリケーションを構築する

インターネットの急速な発展に伴い、Web アプリケーションのパフォーマンスと効率が焦点の 1 つになっています。ユーザーの数。従来の Web フレームワークは、多くの場合、大量のリクエストを処理する際に非効率的であり、高い同時実行要件を満たすことができません。 Web アプリケーションのパフォーマンスと効率を向上させるために、FastAPI が登場しました。

FastAPI は、卓越したパフォーマンスを実現しながら、シンプルさと使いやすさを維持する、最新の Python ベースの Web フレームワークです。 FastAPI は非同期プログラミング モデルを採用し、Python のコルーチンと非同期 IO メカニズムを使用して、アプリケーションが大量の同時リクエストを効率的に処理できるようにします。ここでは、FastAPI を使用して高性能な非同期 Web アプリケーションを構築する方法を紹介します。

  1. FastAPI のインストール

まず、pip コマンドを使用して FastAPI をインストールする必要があります:

pip install fastapi
ログイン後にコピー
  1. コードの記述

次に、main.py などの Python ファイルを作成し、次のコードを記述します。

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello, World!"}
ログイン後にコピー

上記のコードは、FastAPI アプリケーションを作成し、GET リクエスト ルートを定義します。「/」はルートを表します。ディレクトリ。ルートディレクトリにアクセスすると、「Hello, World!」を含むJSONレスポンスが返されます。

  1. アプリケーションの実行

uvicorn を使用して FastAPI アプリケーションを実行します:

uvicorn main:app --reload
ログイン後にコピー

これで、FastAPI アプリケーションが実行されます。ブラウザを開いて http://localhost:8000 にアクセスすると、「Hello, World!」という応答が表示されます。

  1. 非同期処理関数の作成

FastAPI は、リクエストを処理するための非同期処理関数の使用をサポートしています。以下は、非同期処理関数の使用例です。

from fastapi import FastAPI
import asyncio

app = FastAPI()

async def background_task():
    while True:
        print("Running background task...")
        await asyncio.sleep(1)

@app.get("/")
async def root():
    asyncio.create_task(background_task())
    return {"message": "Hello, World!"}
ログイン後にコピー

上記のコードでは、「バックグラウンド タスクを実行中...」を毎秒出力する非同期タスク background_task() を定義します。ルートルート「/」のハンドラー関数では、asyncio.create_task()を使用してバックグラウンドタスクを作成します。このように、ルートディレクトリにアクセスすると、同時にbackground_task()の実行が開始されます。

  1. リクエスト パラメータの処理

FastAPI は、URL パス パラメータ、クエリ パラメータ、リクエスト本文などを介したパラメータの受け渡しをサポートしており、非常に柔軟です。以下は、URL パス パラメーターとクエリ パラメーターの使用例です。

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}
ログイン後にコピー

上記のコードでは、パス パラメーター item_id とクエリ パラメーター q を使用して GET リクエスト ルートを定義します。たとえば、/items/42?q=test にアクセスすると、次の応答が返されます。

{
    "item_id": 42,
    "q": "test"
}
ログイン後にコピー
  1. 非同期データベース操作

FastAPI は本質的に非同期操作をサポートしており、非同期データベース対話で簡単に使用できます。以下は、非同期データベース操作の使用例です。

from fastapi import FastAPI
from databases import Database

app = FastAPI()
database = Database("sqlite:///test.db")

@app.on_event("startup")
async def startup():
    await database.connect()

@app.on_event("shutdown")
async def shutdown():
    await database.disconnect()

@app.get("/")
async def root():
    query = "SELECT * FROM items"
    items = await database.fetch_all(query)
    return {"items": items}
ログイン後にコピー

上記のコードでは、データベース ライブラリを使用して SQLite データベース接続を作成し、アプリケーションの起動時とシャットダウン時に接続操作と切断操作を実行します。ルート ルートのハンドラー関数で、SELECT クエリを実行し、結果を返します。

  1. アプリケーションのデプロイ

uvicorn、Gunicorn などのツールを使用して、FastAPI アプリケーションを実稼働環境にデプロイします。たとえば、Gunicorn を使用して FastAPI アプリケーションをデプロイします。

gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
ログイン後にコピー

上記のコマンドは 4 つのプロセスを開始し、UvicornWorker を使用してリクエストを処理します。

概要

FastAPI は、高パフォーマンスの非同期 Web アプリケーションの構築に役立つ、非常に強力な最新の Web フレームワークです。 Python の非同期プログラミング機能を活用することで、大量の同時リクエストを簡単に処理し、効率的なデータベース操作を実現できます。個人プロジェクトを開発している場合でも、エンタープライズ レベルのアプリケーションを構築している場合でも、FastAPI は試してみる価値のあるオプションです。

以上がFastAPI を使用して高性能の非同期 Web アプリケーションを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート