Загрузка изображения с помощью FastAPI вызывает ошибку exc.ResourceClosedError
У меня есть конечная точка, которая сохраняет загруженное изображение:
@router.post("/v1/installation/{installation_uuid}/image")
@db.create_connection
async def upload_installation_image(installation_uuid: UUID, request: Request):
content_type = request.headers["content-type"]
async with db.transaction():
installation = await get_installation_by_uuid(installation_uuid)
if not installation:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Installation {installation} not found")
try:
content = await request.body()
image_uuid = await save_installation_image(installation.uuid, content, content_type)
except Exception as e:
log.debug(f"An error raised while uploading image: {e}")
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Error while uploading image to db"
)
return {"image_uuid": image_uuid}
save_installation_image
сделать простую вставку в БД.
В моих тестах я посылаю 3 запроса к этой конечной точке. и все работает нормально:
tests.py
# upload image 1
data1 = b"\x01\x02\x03\x61\x05\x61"
response = session.post(
f"/v1/installation/{installation_uuid}/image", data=data1, headers={"content-type": "image/png"}
)
# upload image 2
data2 = b"\x01\x02\x03\x61\x05\x62"
response = session.post(
f"/v1/installation/{installation_uuid}/image", data=data2, headers={"content-type": "image/png"}
)
# upload image 3
data3 = b"\x01\x02\x03\x61\x05\x63"
response = session.post(
f"/v1/installation/{installation_uuid}/image", data=data3, headers={"content-type": "image/png"}
)
Но когда FE начинает вызывать этот запрос, каждый запрос после первого начинает завершаться ошибкой:
Также, когда я меняю данные на данные, которые отправляют FE, у меня тоже начинает выходить ошибка. Что может вызвать эту ошибку, и почему, если я посылаю реальные изображения, соединение закрывается после первого запроса?
P.S. Если я отправляю только 1 изображение, оно работает нормально, так что проблема в отправке нескольких запросов.