РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
122 of 307 menu

Класс StreamingResponse

Класс StreamingResponse применяется для отправки данных клиенту по частям, не загружая весь ответ в память целиком. Первым параметром передаётся итерируемый объект или асинхронный генератор, возвращающий байты. Вторым параметром можно указать тип содержимого media_type. Дополнительно доступны параметры status_code, headers и background. Такой ответ удобен для передачи больших файлов, логов и данных, генерируемых на лету.

Синтаксис

StreamingResponse(content, status_code=200, headers=None, media_type=None, background=None)

Пример

Давайте вернём поток строк через обычный генератор:

from fastapi import FastAPI from fastapi.responses import StreamingResponse app = FastAPI() def gen(): for chunk in ['abcde', 'article', 'hello']: yield chunk.encode('utf-8') @app.get('/stream') def stream(): return StreamingResponse(gen(), media_type='text/plain')

Результат выполнения кода для адреса /stream:

"abcdearticlehello"

Пример

Давайте отдадим данные из асинхронного генератора:

from fastapi import FastAPI from fastapi.responses import StreamingResponse import asyncio app = FastAPI() async def gen(): for chunk in ['user', 'abcde', 'hello']: yield (chunk + '\n').encode('utf-8') await asyncio.sleep(0.1) @app.get('/async-stream') async def async_stream(): return StreamingResponse(gen(), media_type='text/plain')

Результат выполнения кода для адреса /async-stream:

"user\nabcde\nhello\n"

Смотрите также

  • класс Response,
    который является базовым классом для всех ответов
  • класс FileResponse,
    который отдаёт файл с диска потоком
  • атрибут media_type,
    который задаёт MIME-тип содержимого ответа
  • атрибут headers,
    который хранит заголовки HTTP-ответа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить