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

Метод stream

Метод stream применяется к объекту запроса Request и возвращает асинхронный итератор для чтения тела запроса по частям. Этот метод особенно полезен при обработке больших файлов или потоковых данных, когда загружать всё тело запроса в память сразу нежелательно.

Метод не принимает обязательных параметров. Возвращает объект AsyncIterator[bytes], который выдаёт фрагменты тела запроса по мере их поступления.

Синтаксис

async for chunk in request.stream(): # process chunk

Пример

Давайте прочитаем тело запроса в виде потока и посчитаем общее количество полученных байтов:

from fastapi import FastAPI, Request app = FastAPI() @app.post('/upload') async def upload(request: Request): total = 0 async for chunk in request.stream(): total += len(chunk) return {'bytes': total}

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

{"bytes": 5}

Пример

Давайте накопим все фрагменты потока в один байтовый объект и вернём его длину:

from fastapi import FastAPI, Request app = FastAPI() @app.post('/collect') async def collect(request: Request): data = b'' async for chunk in request.stream(): data += chunk return {'length': len(data)}

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

{"length": 7}

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

  • класс Request,
    который представляет HTTP-запрос
  • метод body,
    который читает тело запроса целиком
  • метод json,
    который читает тело запроса как JSON
  • метод form,
    который читает данные формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить