


Mengapa FastAPI StreamingResponse Saya Tidak Berfungsi dengan Fungsi Penjana?
StreamingResponse Bukan Penstriman dengan Fungsi Penjana
FastAPI menawarkan kelas StreamingResponse untuk menghantar respons kembali kepada pelanggan secara berperingkat. Walau bagaimanapun, dalam sesetengah kes, fungsi ini mungkin tidak berfungsi seperti yang dijangkakan.
Penyiasatan Punca Punca
Selepas menganalisis kod FastAPI yang disediakan dan penerangan isu, kami telah mengenal pasti beberapa punca yang berpotensi:
1. Penggunaan POST Request for Data Request:
Penggunaan POST request tidak sesuai untuk meminta data daripada pelayan. Sebaliknya, adalah disyorkan untuk menggunakan permintaan GET untuk tujuan ini.
2. Penggunaan Parameter Pertanyaan untuk Pengesahan:
Menghantar bukti kelayakan sensitif, seperti auth_key, melalui parameter pertanyaan adalah tidak selamat. Pertimbangkan untuk menggunakan pengepala atau kuki untuk pengesahan sebaliknya.
3. Fungsi Penjana Menyekat:
Fungsi penjana dalam StreamingResponse ditakrifkan dengan def (bukan def async), yang boleh membawa kepada isu penyekatan dalam gelung acara FastAPI.
4. Pecahan berasaskan baris:
Iter_lines() Permintaan berulang pada data respons satu baris pada satu masa. Jika tiada pemisah baris wujud dalam respons, data tidak akan dicetak secara berperingkat.
5. Menghidu MIME:
Sesetengah penyemak imbas (cth., Chrome) mungkin menimbal respons teks/biasa untuk menyemak kandungan teks biasa sebelum memaparkannya. Ini boleh menghalang penstriman.
Pembetulan Disyorkan:
1. Gunakan Permintaan GET:
Faktor semula kod untuk menggunakan permintaan GET untuk mengambil data.
2. Pengesahan Selamat:
Gunakan pengepala atau kuki untuk menghantar bukti kelayakan pengesahan dengan selamat.
3. Fungsi Penjana Async:
Tentukan fungsi penjana untuk StreamingResponse dengan async def. Jika sebarang operasi menyekat diperlukan dalam penjana, gunakan kumpulan benang luaran untuk melaksanakannya.
4. Chunking berasaskan ketulan:
Gunakan iter_content() dan bukannya iter_lines() untuk mengulangi data tindak balas dalam ketulan. Nyatakan saiz bongkah yang sesuai.
5. Lumpuhkan MIME Sniffing:
Lumpuhkan MIME Sniffing dengan menentukan jenis media yang berbeza (cth., application/json atau teks/event-strim) untuk StreamingResponse atau dengan menetapkan pengepala X-Content-Type-Options kepada nosniff.
Bekerja Contoh:
Kod berikut menunjukkan apl FastAPI yang berfungsi dengan keupayaan penstriman:
from fastapi import FastAPI, StreamingResponse import asyncio app = FastAPI() async def fake_data_streamer(): for i in range(10): yield b'some fake data\n\n' await asyncio.sleep(0.5) @app.get('/') async def main(): return StreamingResponse(fake_data_streamer(), media_type='text/event-stream')
Atas ialah kandungan terperinci Mengapa FastAPI StreamingResponse Saya Tidak Berfungsi dengan Fungsi Penjana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Python cemerlang dalam permainan dan pembangunan GUI. 1) Pembangunan permainan menggunakan pygame, menyediakan lukisan, audio dan fungsi lain, yang sesuai untuk membuat permainan 2D. 2) Pembangunan GUI boleh memilih tkinter atau pyqt. TKInter adalah mudah dan mudah digunakan, PYQT mempunyai fungsi yang kaya dan sesuai untuk pembangunan profesional.

Python sesuai untuk sains data, pembangunan web dan tugas automasi, manakala C sesuai untuk pengaturcaraan sistem, pembangunan permainan dan sistem tertanam. Python terkenal dengan kesederhanaan dan ekosistem yang kuat, manakala C dikenali dengan keupayaan kawalan dan keupayaan kawalan yang mendasari.

Anda boleh mempelajari konsep pengaturcaraan asas dan kemahiran Python dalam masa 2 jam. 1. Belajar Pembolehubah dan Jenis Data, 2.

Python digunakan secara meluas dalam bidang pembangunan web, sains data, pembelajaran mesin, automasi dan skrip. 1) Dalam pembangunan web, kerangka Django dan Flask memudahkan proses pembangunan. 2) Dalam bidang sains data dan pembelajaran mesin, numpy, panda, scikit-learn dan perpustakaan tensorflow memberikan sokongan yang kuat. 3) Dari segi automasi dan skrip, Python sesuai untuk tugas -tugas seperti ujian automatik dan pengurusan sistem.

Anda boleh mempelajari asas -asas Python dalam masa dua jam. 1. Belajar pembolehubah dan jenis data, 2. Struktur kawalan induk seperti jika pernyataan dan gelung, 3 memahami definisi dan penggunaan fungsi. Ini akan membantu anda mula menulis program python mudah.

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Memuatkan Fail Pickle di Python 3.6 Kesalahan Laporan Alam Sekitar: ModulenotFoundError: Nomodulenamed ...


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft