[파이썬] requests 이벤트 훅 활용 예제

requests는 파이썬에서 HTTP 요청을 보내는 데 사용되는 인기있는 라이브러리입니다. requests 라이브러리는 이벤트 훅(event hook) 기능을 제공하여 요청과 응답과 관련된 다양한 작업을 처리할 수 있습니다. 이 글에서는 requests의 이벤트 훅을 활용하는 예제를 소개하겠습니다.

requests 이벤트 훅이란?

requests 라이브러리에서 이벤트 훅은 HTTP 요청과 응답 사이에 발생하는 특정 작업을 처리하기 위한 콜백(callback) 함수입니다. 이벤트 훅을 통해 요청의 전송 직전, 응답의 도착 직후 또는 오류 발생 시 등의 이벤트를 감지하고 추가적인 작업을 수행할 수 있습니다.

requests 이벤트 훅 활용 예제

다음은 requests 이벤트 훅을 사용하여 요청과 응답에 대한 로깅을 수행하는 예제 코드입니다:

import requests

def before_request_callback(request):
    print("Sending HTTP request...")
    print(f"Request URL: {request.url}")
    print(f"Request Method: {request.method}")
    print(f"Request Headers: {request.headers}")
    print(f"Request Body: {request.body}")

def after_response_callback(response, *args, **kwargs):
    print("Received HTTP response...")
    print(f"Response URL: {response.url}")
    print(f"Response Status Code: {response.status_code}")
    print(f"Response Headers: {response.headers}")
    print(f"Response Body: {response.text}")

# requests 세션 생성
session = requests.Session()

# 이벤트 훅 등록
session.hooks["pre_request"] = [before_request_callback]
session.hooks["response"] = [after_response_callback]

# GET 요청
response = session.get("https://api.example.com")

# 응답 결과 출력
print(response.text)

위 코드에서 before_request_callback 함수는 요청 전에 호출되어 전송할 요청에 대한 정보를 출력하고, after_response_callback 함수는 응답 도착 시 호출되어 응답에 대한 정보를 출력합니다. 이러한 이벤트 훅을 통해 요청 및 응답에 대한 로깅, 오류 처리, 인증 등의 작업을 추가로 수행할 수 있습니다.

결론

이번 글에서는 requests 라이브러리의 이벤트 훅을 활용하는 예제를 소개했습니다. 이벤트 훅은 requests를 사용하는 개발자에게 유용한 기능으로, 요청과 응답과 관련된 다양한 작업을 처리할 수 있게 해줍니다. requests 라이브러리의 공식 문서를 참고하면 좀 더 자세한 내용을 확인할 수 있습니다.