한은이:
requests
모듈 디버깅할 때 어케 하시나요…
문제 상황
최근에 아래와 같은 간단한 코드를 디버깅할 일이 있었음:
이 코드가 작동하지 않아서 원인을 파악하고 해결했지만, request/response에 대한 정보를 간단하게 디버깅 레벨에서 확인할 방법이 필요했음.
찾아본 내용
How can I see the entire HTTP request that’s being sent by my Python application? - Stack Overflow에서 관련 정보를 찾아보긴 했음. 하지만 이 방식은 구현이 필요하고 번거로움. 더 간단하고 쉽게, ON/OFF할 수 있는 방법이 필요했음.
해결 방법
아래 두가지를 조합해서 사용하기로 함
- requests 모듈의 EventHooks
- request-toolbelt 라이브러리의
dump_all()
) 유틸 함수
예시 코드
requests.Session 활용
세션을 사용해서 한 번 설정한 후, 요청에 대한 로그를 쉽게 남길 수 있음.
개별 requests 호출에 이벤트 훅 적용
세션을 사용하지 않고, 각 호출에서 훅을 넘길 수도 있음.
이렇게 하면 개별 호출에서 로깅을 간편하게 추가할 수 있음.
example-request-toolbelts-with-event-hooks.ipynb
참고 자료
이 방법을 통해 API 호출을 디버깅할 때 깔끔하게 request/response 로그를 확인할 수 있음. 필요에 따라 ON/OFF 가능하다는 점이 특히 유용함.