Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Muat Naik Fail FastAPI Lambat Berbanding dengan Flask?

Mengapa Muat Naik Fail FastAPI Lambat Berbanding dengan Flask?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-07 15:35:03680semak imbas

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!

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