Rumah pembangunan bahagian belakang Tutorial Python Cara menggunakan baris gilir mesej untuk pemprosesan tugas tak segerak dalam FastAPI

Cara menggunakan baris gilir mesej untuk pemprosesan tugas tak segerak dalam FastAPI

Jul 30, 2023 pm 09:21 PM
baris gilir mesej fastapi Tugas Asynchronous

Cara menggunakan baris gilir mesej untuk pemprosesan tugas asynchronous dalam FastAPI

Pengenalan:
Dalam aplikasi web, selalunya dihadapi bahawa tugas yang memakan masa perlu diproses, seperti menghantar e-mel, menjana laporan, dsb. Jika tugasan ini diletakkan dalam proses permintaan-tindak balas segerak, pengguna perlu menunggu untuk masa yang lama, mengurangkan pengalaman pengguna dan kelajuan tindak balas pelayan. Untuk menyelesaikan masalah ini, kami boleh menggunakan baris gilir mesej untuk pemprosesan tugas tak segerak. Artikel ini akan memperkenalkan cara menggunakan baris gilir mesej untuk memproses tugas tak segerak dalam rangka kerja FastAPI dan memberikan contoh kod yang sepadan.

1. Apakah itu baris gilir mesej?
Baris gilir mesej ialah mekanisme untuk komunikasi tak segerak antara komponen aplikasi. Ia membolehkan pengirim menghantar mesej ke baris gilir, dan penerima untuk mendapatkan dan memproses mesej ini daripada baris gilir. Kelebihan baris gilir mesej ialah penghantar dan penerima dipisahkan Pengirim tidak perlu menunggu penerima menyelesaikan pemprosesan sebelum meneruskan melaksanakan tugas lain, dengan itu meningkatkan prestasi pemprosesan dan keselarasan sistem.

2. Pilih perkhidmatan baris gilir mesej yang sesuai
Sebelum menggunakan baris gilir mesej, kita perlu memilih perkhidmatan baris gilir mesej yang sesuai. Pada masa ini, perkhidmatan baris gilir mesej yang lebih biasa digunakan termasuk RabbitMQ, Kafka, ActiveMQ, dll. Perkhidmatan baris gilir mesej ini menyediakan fungsi yang kaya dan jaminan kebolehpercayaan, dan kami boleh memilih perkhidmatan yang sesuai mengikut keperluan sebenar.

3 Menggunakan baris gilir mesej dalam FastAPI
Untuk menggunakan baris gilir mesej dalam FastAPI, kami perlu memasang perpustakaan pelanggan baris gilir mesej yang sepadan. Mengambil RabbitMQ sebagai contoh, anda boleh memasangnya melalui arahan pip install aio-pika. Selepas pemasangan selesai, kami boleh memperkenalkan kebergantungan dan modul yang sepadan dalam fail utama FastAPI. pip install aio-pika进行安装。安装完成后,我们可以在FastAPI的主文件中引入相应的依赖项和模块。

from fastapi import FastAPI
from fastapi import BackgroundTasks
from aio_pika import connect, IncomingMessage
Salin selepas log masuk

接下来,我们需要配置消息队列的连接信息,并编写处理消息的函数。

AMQP_URL = "amqp://guest:guest@localhost/"
QUEUE_NAME = "task_queue"

async def process_message(message: IncomingMessage):
    # 在这里编写异步任务的处理逻辑
    # 例如发送邮件、生成报表等
    print(f"Received message: {message.body}")
    # 这里可以根据实际情况进行任务处理
    # ...

    message.ack()
Salin selepas log masuk

然后,我们需要在FastAPI应用程序中定义一个接口,用来接收需要进行异步处理的任务。

app = FastAPI()

@app.post("/task")
async def handle_task(request: dict, background_tasks: BackgroundTasks):
    connection = await connect(AMQP_URL)
    channel = await connection.channel()
    queue = await channel.declare_queue(QUEUE_NAME)

    # 发送任务给消息队列
    await queue.publish(
        body=str(request).encode(),
        routing_key=QUEUE_NAME
    )

    connection.close()

    return {"message": "Task submitted successfully"}
Salin selepas log masuk

上述代码定义了一个POST接口/task

async def listen_to_queue():
    connection = await connect(AMQP_URL)
    channel = await connection.channel()
    queue = await channel.declare_queue(QUEUE_NAME)

    # 持续监听消息队列
    async with queue.iterator() as queue_iterator:
        async for message in queue_iterator:
            async with message.process():
                await process_message(message)
Salin selepas log masuk

Seterusnya, kita perlu mengkonfigurasi maklumat sambungan baris gilir mesej dan menulis fungsi untuk memproses mesej.

app = FastAPI()

@app.on_event("startup")
async def startup_event():
    # 启动消息队列监听
    await listen_to_queue()
Salin selepas log masuk
Kemudian, kita perlu menentukan antara muka dalam aplikasi FastAPI untuk menerima tugasan yang memerlukan pemprosesan tak segerak.

rrreee

Kod di atas mentakrifkan antara muka POST /task Apabila permintaan diterima, tugasan dihantar ke baris gilir mesej untuk pemprosesan tak segerak dan mesej yang berjaya dikembalikan selepas pemprosesan selesai.

Akhir sekali, kita perlu menulis fungsi tak segerak untuk mendengar baris gilir mesej dan mengendalikan tugas tak segerak.

rrreee
Di pintu masuk aplikasi FastAPI, kita perlu memulakan fungsi tak segerak untuk mendengar baris gilir mesej.

rrreee

Pada ketika ini, kami telah menyelesaikan konfigurasi dan pengekodan menggunakan baris gilir mesej untuk pemprosesan tugas tak segerak dalam FastAPI.

Kesimpulan:

Dengan menggunakan baris gilir mesej, kami boleh mengasingkan tugas yang memakan masa daripada proses penyegerakan dan meningkatkan prestasi aplikasi dan kelajuan tindak balas. Artikel ini menerangkan cara mengkonfigurasi dan menggunakan baris gilir mesej dalam FastAPI dan menyediakan contoh kod yang sepadan. Saya harap ia akan membantu anda apabila membangunkan pemprosesan tugas tak segerak.

Rujukan: 🎜[1] https://fastapi.tiangolo.com/🎜[2] https://docs.aio-pika.readthedocs.io/🎜🎜(Nota: Contoh kod di atas adalah untuk rujukan sahaja, sebenar Ia perlu diselaraskan mengikut situasi tertentu)🎜.

Atas ialah kandungan terperinci Cara menggunakan baris gilir mesej untuk pemprosesan tugas tak segerak dalam FastAPI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Amalan pembangunan Java Websocket: bagaimana untuk melaksanakan fungsi baris gilir mesej Amalan pembangunan Java Websocket: bagaimana untuk melaksanakan fungsi baris gilir mesej Dec 02, 2023 pm 01:57 PM

Amalan pembangunan Java Websocket: Bagaimana untuk melaksanakan fungsi baris gilir mesej Pengenalan: Dengan perkembangan pesat Internet, komunikasi masa nyata menjadi semakin penting. Dalam kebanyakan aplikasi web, kemas kini masa nyata dan keupayaan pemberitahuan diperlukan melalui pemesejan masa nyata. JavaWebsocket ialah teknologi yang membolehkan komunikasi masa nyata dalam aplikasi web. Artikel ini akan memperkenalkan cara menggunakan JavaWebsocket untuk melaksanakan fungsi baris gilir mesej dan menyediakan contoh kod khusus. Konsep asas baris gilir mesej

Bina aplikasi web antarabangsa menggunakan rangka kerja FastAPI Bina aplikasi web antarabangsa menggunakan rangka kerja FastAPI Sep 29, 2023 pm 03:53 PM

Gunakan rangka kerja FastAPI untuk membina aplikasi Web antarabangsa FastAPI ialah rangka kerja Web Python berprestasi tinggi yang menggabungkan anotasi jenis Python dan sokongan tak segerak berprestasi tinggi untuk menjadikan pembangunan aplikasi Web lebih mudah, lebih pantas dan lebih dipercayai. Apabila membina aplikasi Web antarabangsa, FastAPI menyediakan alatan dan konsep yang mudah yang boleh menjadikan aplikasi menyokong berbilang bahasa dengan mudah. Di bawah saya akan memberikan contoh kod khusus untuk memperkenalkan cara menggunakan rangka kerja FastAPI untuk membina

Flask vs FastAPI: Pilihan terbaik untuk pembangunan API Web yang cekap Flask vs FastAPI: Pilihan terbaik untuk pembangunan API Web yang cekap Sep 27, 2023 pm 09:01 PM

FlaskvsFastAPI: Pilihan terbaik untuk pembangunan WebAPI yang cekap Pengenalan: Dalam pembangunan perisian moden, WebAPI telah menjadi bahagian yang sangat diperlukan. Mereka menyediakan data dan perkhidmatan yang membolehkan komunikasi dan saling kendali antara aplikasi yang berbeza. Apabila memilih rangka kerja untuk membangunkan WebAPI, Flask dan FastAPI ialah dua pilihan yang telah menarik banyak perhatian. Kedua-dua rangka kerja sangat popular dan masing-masing mempunyai kelebihan tersendiri. Dalam artikel ini, kita akan melihat Fl

Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk melaksanakan tugas tak segerak Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk melaksanakan tugas tak segerak Nov 22, 2023 pm 12:01 PM

"Cadangan Pembangunan: Cara Menggunakan Rangka Kerja ThinkPHP untuk Melaksanakan Tugas Asynchronous" Dengan perkembangan pesat teknologi Internet, aplikasi Web mempunyai keperluan yang semakin tinggi untuk mengendalikan sejumlah besar permintaan serentak dan logik perniagaan yang kompleks. Untuk meningkatkan prestasi sistem dan pengalaman pengguna, pembangun sering mempertimbangkan untuk menggunakan tugas tak segerak untuk melaksanakan beberapa operasi yang memakan masa, seperti menghantar e-mel, memproses muat naik fail, menjana laporan, dsb. Dalam bidang PHP, rangka kerja ThinkPHP, sebagai rangka kerja pembangunan yang popular, menyediakan beberapa cara mudah untuk melaksanakan tugas tak segerak.

Django, Flask dan FastAPI: Rangka kerja manakah yang sesuai untuk pemula? Django, Flask dan FastAPI: Rangka kerja manakah yang sesuai untuk pemula? Sep 27, 2023 pm 09:06 PM

Django, Flask dan FastAPI: Rangka kerja manakah yang sesuai untuk pemula? Pengenalan: Dalam bidang pembangunan aplikasi web, terdapat banyak rangka kerja Python yang sangat baik untuk dipilih. Artikel ini akan menumpukan pada tiga rangka kerja yang paling popular, Django, Flask dan FastAPI. Kami akan menilai ciri mereka dan membincangkan rangka kerja yang terbaik untuk digunakan oleh pemula. Pada masa yang sama, kami juga akan menyediakan beberapa contoh kod khusus untuk membantu pemula lebih memahami rangka kerja ini. 1. Django: Django

Pembangunan Golang: Bina baris gilir mesej yang boleh dipercayai menggunakan NATS Pembangunan Golang: Bina baris gilir mesej yang boleh dipercayai menggunakan NATS Sep 21, 2023 am 11:21 AM

Pembangunan Golang: Menggunakan NATS untuk membina baris gilir mesej yang boleh dipercayai, contoh kod khusus diperlukan Pengenalan: Dalam sistem teragih moden, baris gilir mesej merupakan komponen penting yang digunakan untuk mengendalikan komunikasi tak segerak, memisahkan komponen sistem dan mencapai penghantaran mesej yang boleh dipercayai. Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan Golang dan NATS (nama penuh ialah "Sistem Pemesejan Boleh Dipercayai Berprestasi Tinggi") untuk membina baris gilir mesej yang cekap dan boleh dipercayai serta menyediakan contoh kod khusus. Apa itu NATS? NATS ialah sistem pemesejan sumber terbuka yang ringan.

Django, Flask dan FastAPI: Pilih yang paling sesuai dengan keperluan pembangunan anda Django, Flask dan FastAPI: Pilih yang paling sesuai dengan keperluan pembangunan anda Sep 29, 2023 am 10:49 AM

Django, Flask dan FastAPI: Pilih yang paling sesuai dengan keperluan pembangunan anda, contoh kod khusus yang diperlukan Pengenalan: Dalam pembangunan web moden, memilih rangka kerja yang betul adalah penting. Memandangkan Python terus berkembang dalam bidang pembangunan web, rangka kerja seperti Django, Flask dan FastAPI menjadi semakin popular di kalangan pembangun. Artikel ini akan memperkenalkan ciri dan senario yang boleh digunakan bagi ketiga-tiga rangka kerja ini, digabungkan dengan contoh kod khusus, untuk membantu anda memilih rangka kerja yang paling sesuai dengan keperluan pembangunan anda. 1. D

Penggunaan hebat Redis dalam baris gilir mesej Penggunaan hebat Redis dalam baris gilir mesej Nov 07, 2023 pm 04:26 PM

Penggunaan Redis yang hebat dalam baris gilir mesej Baris gilir mesej ialah seni bina decoupled yang biasa digunakan untuk menyampaikan mesej tak segerak antara aplikasi. Dengan menghantar mesej ke baris gilir, pengirim boleh terus melaksanakan tugas lain tanpa menunggu balasan daripada penerima. Dan penerima boleh mendapatkan mesej daripada baris gilir dan memprosesnya pada masa yang sesuai. Redis ialah pangkalan data dalam memori sumber terbuka yang biasa digunakan dengan prestasi tinggi dan keupayaan storan berterusan. Dalam baris gilir mesej, struktur data berbilang Redis dan prestasi cemerlang menjadikannya pilihan yang ideal

See all articles