Не могу забирать запросы Aiohttp из цикла - ошибка ValueError: I/O operation on closed file + aiohttp.payload.LookupError
Когда пробую перебрать список с API ключами в цикле, то вылазит две ошибки: ValueError: I/O operation on closed file AND aiohttp.payload.LookupError...
Вот функция запроса к API:
async def get_api_response(photo_bytes, api_key, language):
async with aiohttp.ClientSession() as session:
async with session.post(URL_API,
data={
"picture.png": photo_bytes,
"apikey": api_key,
"language": language
}) as response:
return await response.text()
И вот цикл перебора апи ключей (находится в хендлере aiogram, но это ничего не решает):
for api_key in API_KEYS:
response = json.loads(await get_api_response(photo_bytes=photo_bytes, api_key=api_key, language=photo_lang))
print(response)
Когда пробую вставить цикл в функцию с запросом, то возникает такая же ошибка. Но когда вызываю функцию без цикла, то ошибки нету. Какие есть предложения, как исправить ошибку с минимальными изминениями?
Логика такая кода такая: если при переборе API ключей в цикле API ключ работает, то брейкаем(break) цикл.
UPD: В ХОДЕ МНОГОЧАСОВЫХ ИССЛЕДОВАНИЙ Я ПОНЯЛ, ЧТО ОШИБКА ВЫЛАЗИТ, ПОТОМУ ЧТО ПОСЛЕ ПЕРВОГО ЦИКЛА ЗАКРЫВАЕТСЯ PHOTO_BYTES
Вот сама инициализация photo_bytes:
photo = cv2.imread(photo_path)
unused_var, compressed_image = cv2.imencode('.png', photo, [1, 90])
photo_bytes = io.BytesIO(compressed_image)
Ответы (1 шт):
ну типа что-то такого
with io.BytesIO(compressed_image) as f:
photo_bytes = f.read()