Python httpx readtimeout 사례 & 해결법

파이썬의 비동기 http 클라이언트 라이브러리
Httpx에서 발생하는 readtimeout은
HTTPError > TransportError > TimeoutException의 하위 Timeout Exception이다.


httpx.TimeoutException은 timeout 에러의 Base class이며
시간 내에 작업이 수행되지 않았을 때 발생한다.

Timeout에 해당하는 예외처리 중에
보다 세부적인 케이스로

ConnectTimeout : host에 연결하는 도중 Timeout

ReadTimeout      : host로부터 데이터를 받는 도중 Timeout

WriteTimeout      : host로 데이터를 보내는 도중 Timeout

PoolTimeout       : pool로부터 connection을 얻으려고 대기하는 도중 Timeout

가 있다.



Agent를 개발하면서 LLM API를 호출할 때 ReadTimeout을 많이 겪게 된다.
host인 LLM API 서버로부터 응답을 기다리다가 발생하는 것인데
host와 client ( https client ) 둘 다 튜닝이 필요하다.


host에서는 응답 데이터를 압축한다던가 응답 토큰 수에 제약을 두는 방법을 적용하고
client에서는 https client의 readtimeout 스레시홀드를 늘리는 방법이 유효하다.

다만 client의 readtimeout을 무한정 늘리면
양측에 열린 connection이 계속해서 자원을 점유하기 때문에
LLM API의 응답 데이터를 제한시키는 것이 좋다.  

댓글

이 블로그의 인기 게시물

Blogger 커스터마이징 : CSS 수정 (sticky-header)

노마드코더 개발자북클럽 Clean code 완주, 독후감

노마드코더 개발자북클럽 Clean code TIL 7 : 7장. 오류 처리