Исправление: утечка соединения при ошибке в upload_file / upload_file_buffer#136
Исправление: утечка соединения при ошибке в upload_file / upload_file_buffer#136gistrec wants to merge 4 commits intolove-apples:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Этот PR устраняет утечку соединений в пуле aiohttp.ClientSession в редких сценариях, когда session.post() успевает вернуть заголовки, но чтение тела через response.text() падает исключением, из-за чего соединение не возвращается в пул.
Changes:
- В
upload_file()обёрнут вызовsession.post(...)вasync with ... as responseдля гарантированного освобождения ответа при исключениях во время чтения тела. - В
upload_file_buffer()сделано аналогичное изменение дляsession.post(...).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Olegt0rr
left a comment
There was a problem hiding this comment.
Отличная работа!
Остаётся добавить немного покрытия для задетых участков кода (если помощь нужна - пишите)
И исправить замечания при вызове make run-test
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated 8 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
В aiohttp
session.post()возвращает response после получения заголовков, тело ещё не прочитано.response.text()читает тело уже отдельным вызовом. На этом этапе можем получить:То есть сценарий реальный, но достаточно редкий — нужен сбой именно после получения заголовков, но во время чтения тела. Для upload-эндпоинтов, которые отвечают коротким JSON, вероятность невысокая, но исправление правильное — это best practice для aiohttp