Как загрузить файл в куски в Google Cloud Storage с помощью Fastapi's request.stream ()?Python

Программы на Python
Anonymous
 Как загрузить файл в куски в Google Cloud Storage с помощью Fastapi's request.stream ()?

Сообщение Anonymous »

У меня есть поток данных в приложении FastAPI, где потенциально очень HTTP -корпус загружается, и мне нужно транслировать это в Google Cloud Storage. Я использую библиотеку gcloud.aio.storage для взаимодействия с Google Cloud Storage, поскольку она имеет поддержку Asyncio (она основана на AIOHTTP ). Я пытаюсь транслировать тело, чтобы мне не нужно было хранить все тело одновременно. request.Stream () возвращает генератор Async , в то время как клиент хранилища ожидает либо необработанных данных как bytes или string , или что -то на основе io .Iobase class.
Итак, если я позвоню ниже:

Код: Выделить всё

async def upload(request: fastapi.Request, storage_client: gcloud.aio.storage.Storage):
upload_stream = request.stream()
await storage_client.upload(
"my_bucket",
"my_object",
upload_stream
)
Это не удается с типамиррором: неподдерживаемый тип загрузки: ""
Как я получу io. IOBase -полученный объект потока, который будет принят, не прочитав весь тело запроса одновременно?

Подробнее здесь: https://stackoverflow.com/questions/793 ... equest-str

Вернуться в «Python»