ホームページ  >  記事  >  バックエンド開発  >  FastAPI を使用して高性能の非同期 Web アプリケーションを構築する

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

PHPz
PHPzオリジナル
2023-09-28 09:16:49909ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。