Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara melaksanakan pengendalian dan tindak balas permintaan tak segerak dalam FastAPI

Cara melaksanakan pengendalian dan tindak balas permintaan tak segerak dalam FastAPI

PHPz
PHPzasal
2023-08-01 22:43:573101semak imbas

Cara melaksanakan pemprosesan dan tindak balas permintaan tak segerak dalam FastAPI

Pengenalan:
FastAPI ialah rangka kerja web berasaskan Python moden yang menyediakan prestasi berkuasa dan kemudahan penggunaan untuk membina aplikasi web berprestasi tinggi dengan mudah. Pengendalian dan tindak balas permintaan tak segerak ialah ciri hebat FastAPI yang membolehkan aplikasi kami berfungsi dengan baik dalam menghadapi konkurensi tinggi dan operasi intensif IO. Artikel ini akan memperkenalkan cara melaksanakan pemprosesan dan respons permintaan tak segerak dalam FastAPI dan menyediakan beberapa contoh kod.

1 Fahami prinsip pemprosesan tak segerak
Dalam pembangunan web tradisional, setiap permintaan dan respons adalah segerak, iaitu setiap permintaan menyekat utas pelayan dan respons tidak dikembalikan sehingga pemprosesan selesai. Pemprosesan tak segerak ialah kaedah tidak menyekat yang boleh mengendalikan berbilang permintaan pada masa yang sama dan melepaskan benang pelayan semasa pemprosesan permintaan untuk meningkatkan prestasi serentak pelayan. Dalam Python, kita boleh menggunakan perpustakaan asyncio untuk melaksanakan pemprosesan tak segerak.

2. Sokongan tak segerak dalam FastAPI
FastAPI sememangnya menyokong pemprosesan tak segerak. Dalam FastAPI, kita boleh menggunakan async dan menunggu kata kunci untuk mentakrifkan fungsi tak segerak dan menandakan fungsi sebagai fungsi tak segerak dengan mengisytiharkan async def. Pada masa yang sama, kita juga boleh menggunakan beberapa kaedah yang disediakan oleh perpustakaan asyncio untuk menulis kod tak segerak.

3. Contoh Permulaan Pantas
Mari kita laksanakan contoh pemprosesan dan tindak balas permintaan tak segerak yang mudah.

Langkah pertama, pasang pustaka FastAPI dan uvicorn:

pip install fastapi uvicorn[standard]

Langkah kedua, buat fail main.py dan tambah kod berikut:

from fastapi import FastAPI, BackgroundTasks

app = FastAPI()

async def process_data(data):
    # 模拟耗时操作
    await asyncio.sleep(2)
    return {"result": data}

@app.post("/")
async def process_request(data: str, background_tasks: BackgroundTasks):
    background_tasks.add_task(process_data, data)
    return {"message": "Request accepted"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

Langkah ketiga, jalankan aplikasi:

python main.py

Dalam kod di atas, kita Asynchronous fungsi data_proses ditakrifkan, yang mensimulasikan operasi yang memakan masa dan mengembalikan hasil pemprosesan. Dalam fungsi utama, kami mentakrifkan fungsi pemprosesan permintaan asynchronous process_request melalui penghias app.post, yang menerima parameter data dan menukar process_dataAsynchronous fungsi diproses dalam tugas latar belakang. process_data,模拟了一个耗时操作,并返回处理结果。在主函数中,我们通过app.post装饰器定义了一个异步请求处理函数process_request,它接受一个data参数,并将process_data异步函数放入后台任务中处理。

第四步,测试应用程序:
我们可以使用curl工具或者浏览器来发送一个POST请求,请求数据为{"data": "Hello World"}

Langkah 4, uji aplikasi:

Kami boleh menggunakan alat curl atau penyemak imbas untuk menghantar permintaan POST dan data permintaan ialah {"data": "Hello World"}. Dalam respons yang dikembalikan kami akan mendapat mesej yang menunjukkan bahawa permintaan itu telah diterima.

4. Ringkasan

Melalui pengenalan artikel ini, kami telah mengetahui tentang kaedah melaksanakan pemprosesan dan tindak balas permintaan tak segerak dalam FastAPI. Pemprosesan tak segerak boleh meningkatkan prestasi serentak pelayan, dan amat sesuai untuk memproses sejumlah besar operasi intensif IO. Dalam aplikasi sebenar, kami boleh memilih corak tak segerak dan pustaka yang sesuai untuk mengoptimumkan aplikasi kami mengikut keperluan khusus.

    Rujukan:
  1. Dokumentasi rasmi FastAPI: https://fastapi.tiangolo.com/
  2. dokumentasi rasmi asyncio: https://docs.python.org/3/library/asyncio.html
Operasi yang memakan masa Contoh: https://docs.python.org/3/library/asyncio-task.html#sleeping🎜🎜

Atas ialah kandungan terperinci Cara melaksanakan pengendalian dan tindak balas permintaan tak segerak dalam FastAPI. 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