Mengapa Muat Naik Fail FastAPI Lambat Berbanding dengan Flask?

Mary-Kate Olsen
Lepaskan: 2024-11-07 15:35:03
asal
536 orang telah melayarinya

Why is FastAPI's UploadFile Slow Compared to Flask?

Fail Muat Naik FastAPI Lambat Berbanding dengan Flask

Isu

Memuat naik fail 100 MB menggunakan permintaan FastAPI dan Python mengambil masa kira-kira 128 saat, jauh lebih perlahan daripada 0.5 saat yang diperlukan semasa menggunakan Flask.

Respons

Perbezaan dalam masa muat naik terutamanya disebabkan oleh cara data dikendalikan dalam FastAPI berbanding Flask. Apabila mengendalikan muat naik fail, FastAPI menggunakan SpooledTemporaryFile dengan saiz maksimum lalai 1 MB untuk data permintaan masuk. Apabila saiz fail melebihi 1 MB, data ditulis pada fail sementara pada cakera, menyebabkan proses muat naik yang lebih perlahan.

Penyelesaian Potensi

1. Penulisan Fail Segerak

Tentukan titik akhir menggunakan kata kunci def biasa dan bukannya kata kunci async def dan tulis fail secara serentak.

2. Penulisan Asynchronous (Menggunakan aiofiles)

Tentukan titik akhir menggunakan kata kunci async def dan gunakan aiofiles untuk penulisan fail tak segerak. Pendekatan ini memerlukan menunggu operasi fail selesai.

3. Menggunakan request.stream()

Akses badan permintaan sebagai strim menggunakan request.stream(). Kaedah ini membenarkan ketulan data diproses tanpa menyimpan seluruh badan dalam memori atau pada cakera, meningkatkan prestasi muat naik.

Syor Utama

Untuk prestasi optimum apabila memuat naik fail yang lebih besar, pertimbangkan untuk menggunakan permintaan .stream() kaedah. Pendekatan ini memintas had saiz maksimum 1 MB dan membenarkan pemprosesan terus ketulan data tanpa operasi tulis/baca tambahan.

Atas ialah kandungan terperinci Mengapa Muat Naik Fail FastAPI Lambat Berbanding dengan Flask?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!