ホームページ >バックエンド開発 >Python チュートリアル >FastAPI でキャッシュを使用して応答を高速化する方法

FastAPI でキャッシュを使用して応答を高速化する方法

王林
王林オリジナル
2023-07-28 20:17:391818ブラウズ

FastAPI でキャッシュを使用して応答を高速化する方法

はじめに:
現代の Web 開発では、パフォーマンスが重要な関心事です。アプリケーションが顧客のリクエストに迅速に対応できない場合、ユーザー エクスペリエンスの低下やユーザーの離脱につながる可能性があります。キャッシュの使用は、Web アプリケーションのパフォーマンスを向上させる一般的な方法の 1 つです。この記事では、キャッシュを使用して FastAPI フレームワークの応答速度を高速化する方法を検討し、対応するコード例を示します。

1. キャッシュとは何ですか?
キャッシュは、頻繁にアクセスされるデータをメモリに保存するテクノロジーです。データベースやその他の外部リソースへのアクセス数を削減できるため、顧客のリクエストへの対応が迅速化されます。もちろん、キャッシュを同時に使用する場合には、いくつかの制限と注意事項があります。

2. FastAPI でのキャッシュの使用
FastAPI は、標準の Python 型ヒントに基づいた最新の高速 (高パフォーマンス) Web フレームワークであり、その最下層は Starlette フレームワークを使用して構築されています。 FastAPI でキャッシュを使用するには、Starlette フレームワークのキャッシュ機能を使用する必要があります。以下では、Starlette キャッシュを使用して FastAPI の応答速度を最適化する方法を示します。

まず、Starlette とキャッシュ ライブラリ cachetools:

pip install starlette
pip install cachetools

次に、必要なライブラリを FastAPI アプリケーションに導入します:

from fastapi import FastAPI
from starlette.responses import JSONResponse
from cachetools import cached, TTLCache

次に、FastAPI アプリケーション インスタンスを定義できます。

app = FastAPI()

次に、キャッシュするデータを保存するキャッシュを定義できます。この例では、TTLCache をキャッシュとして使用し、「Time to Live」(TTL) ポリシーに従って期限切れのデータを自動的にクリアします。

cache = TTLCache(maxsize=100, ttl=300)

次に、キャッシュする必要があるルート処理関数を定義できます。キャッシュには @cached(cache) デコレータを使用します。 上記のコードの

@app.get("/api/data")
@cached(cache)
async def get_data():
    # 从数据库或其他外部资源获取数据的逻辑
    data = await get_data_from_database()
    return JSONResponse(data)

get_data_from_database() は、データベースまたはその他の外部からデータを取得するために使用される関数です。リソースの非同期関数。

最後に、FastAPI アプリケーションを実行して、キャッシュ効果をテストできます。 /api/data に初めてアクセスすると、get_data() 関数がデータベースからデータを取得し、キャッシュにキャッシュします。後続のアクセスでは、データベースに再度アクセスすることなく、キャッシュから直接データがフェッチされます。

3. キャッシュの制限と注意事項
キャッシュを使用すると応答速度が大幅に向上しますが、次の点にも注意する必要があります:

  1. データの一貫性: キャッシュによるはメモリに保存される一時的なデータであるため、データの整合性に注意する必要があります。データが変更されると、キャッシュを適時に更新する必要があります。
  2. キャッシュ戦略: キャッシュ時間戦略は、ビジネス ニーズに応じて調整する必要があります。キャッシュ時間を長すぎるとデータの有効期限が切れる可能性があり、キャッシュ時間を短すぎるとデータベース アクセスが頻繁になる可能性があります。
  3. キャッシュ容量: キャッシュ容量も注意が必要な問題です。キャッシュ容量が不足すると古いデータが上書きされ、データベースなどの外部リソースへのアクセス数が増加する可能性があります。

結論:
この記事では、FastAPI でキャッシュを使用して応答を高速化する方法を検討しました。キャッシュの実装には、Starlette フレームワークのキャッシュ機能と、cachetools ライブラリを使用しました。キャッシュを使用するとパフォーマンスが向上しますが、キャッシュの一貫性、戦略、容量などの問題にも注意する必要があります。この記事が FastAPI アプリケーションのパフォーマンスの最適化に役立つことを願っています。

参考資料:

  1. FastAPI 公式ドキュメント: https://fastapi.tiangolo.com/
  2. Starlette 公式ドキュメント: https://www.starlette. io/
  3. cachetools ライブラリのドキュメント: https://cachetools.readthedocs.io/

以上がFastAPI でキャッシュを使用して応答を高速化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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