У меня есть поток данных в приложении 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