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의 응답 데이터를 제한시키는 것이 좋다.