Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan caching dalam FastAPI untuk mempercepatkan respons

Cara menggunakan caching dalam FastAPI untuk mempercepatkan respons

王林
王林asal
2023-07-28 20:17:391692semak imbas

Cara menggunakan caching dalam FastAPI untuk mempercepatkan respons

Petikan:
Dalam pembangunan web moden, prestasi adalah kebimbangan penting. Jika aplikasi kami tidak dapat bertindak balas terhadap permintaan pelanggan dengan cepat, ia boleh menyebabkan penurunan dalam pengalaman pengguna atau bahkan pergolakan pengguna. Menggunakan cache adalah salah satu kaedah biasa untuk meningkatkan prestasi aplikasi web. Dalam artikel ini, kami akan meneroka cara menggunakan caching untuk mempercepatkan kelajuan tindak balas rangka kerja FastAPI dan menyediakan contoh kod yang sepadan.

1. Apakah itu cache?
Caching ialah teknologi yang menyimpan data yang kerap diakses dalam ingatan. Ia boleh mengurangkan bilangan akses kepada pangkalan data atau sumber luaran lain, dengan itu mempercepatkan tindak balas kepada permintaan pelanggan. Sudah tentu, terdapat sekatan dan langkah berjaga-jaga tertentu apabila menggunakan cache pada masa yang sama.

2. Menggunakan caching dalam FastAPI
FastAPI ialah rangka kerja web yang moden dan pantas (berprestasi tinggi) berdasarkan petunjuk jenis Python standard. Menggunakan caching dalam FastAPI memerlukan penggunaan fungsi caching rangka kerja Starlette. Di bawah ini kami akan menunjukkan cara menggunakan caching Starlette untuk mengoptimumkan kelajuan tindak balas FastAPI.

Mula-mula, kita perlu memasang Starlette dan pustaka cache alat cache: 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()rrreee

Kemudian, perkenalkan perpustakaan yang diperlukan dalam aplikasi FastAPI kami:

rrreee
Seterusnya, kami boleh menentukan contoh aplikasi FastAPI :

rrreee
    Kemudian, kita boleh menentukan cache untuk menyimpan data yang ingin kita cache. Dalam contoh ini, kami menggunakan TTLCache sebagai cache, yang akan mengosongkan data tamat tempoh secara automatik mengikut dasar "Masa untuk Hidup" (TTL).
  1. rrreee
  2. Seterusnya, kita boleh menentukan fungsi pemprosesan laluan yang perlu dicache. Gunakan penghias @cached(cache) untuk caching:
  3. rrreee
  4. get_data_from_database() dalam kod di atas ialah kaedah tak segerak yang digunakan untuk mendapatkan data daripada pangkalan data atau sumber luaran lain fungsi.
  5. Akhir sekali, kami boleh menjalankan aplikasi FastAPI dan menguji kesan caching. Apabila mengakses /api/data buat kali pertama, fungsi get_data() akan mendapatkan data daripada pangkalan data dan menyimpannya dalam cache. Capaian seterusnya akan mengambil data terus daripada cache tanpa mengakses pangkalan data lagi.

3. Had dan langkah berjaga-jaga cache
Walaupun menggunakan cache boleh meningkatkan kelajuan tindak balas dengan ketara, anda juga perlu memberi perhatian kepada perkara berikut:

Ketekalan data: Memandangkan cache ialah data sementara yang disimpan dalam ingatan, ia perlu Beri perhatian kepada data ketekalan. Apabila data berubah, cache perlu dikemas kini dalam masa.
  1. Strategi cache: Strategi masa cache perlu dilaraskan mengikut keperluan perniagaan. Menggunakan masa cache yang terlalu lama boleh menyebabkan data tamat tempoh, manakala menggunakan masa cache yang terlalu singkat boleh menyebabkan akses pangkalan data yang kerap.
  2. Kapasiti cache: Kapasiti cache juga merupakan isu yang memerlukan perhatian. Jika kapasiti cache tidak mencukupi, ia boleh menyebabkan data lama diganti, dengan itu meningkatkan bilangan akses kepada pangkalan data atau sumber luaran lain.
  3. Kesimpulan:
Dalam artikel ini, kami meneroka cara menggunakan caching dalam FastAPI untuk mempercepatkan respons. Kami menggunakan fungsi caching rangka kerja Starlette dan pustaka cachetools untuk melaksanakan caching. Walaupun menggunakan cache boleh meningkatkan prestasi, anda juga perlu memberi perhatian kepada isu seperti ketekalan cache, strategi dan kapasiti. Semoga artikel ini akan membantu anda mengoptimumkan prestasi aplikasi FastAPI anda. 🎜🎜Bahan rujukan: 🎜🎜🎜Dokumentasi rasmi FastAPI: https://fastapi.tiangolo.com/🎜🎜Dokumentasi rasmi Starlette: https://www.starlette.io/🎜🎜dokumentasi perpustakaan cachetools: https://cachetools. readthedocs.io/🎜🎜

Atas ialah kandungan terperinci Cara menggunakan caching dalam FastAPI untuk mempercepatkan respons. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn