[파이썬] requests 세션 유지하기

Requests는 Python에서 HTTP 요청을 보내는 데 사용되는 인기있는 라이브러리입니다. 기본적으로 각 요청은 독립적인 세션으로 처리되지만, 때로는 세션을 유지하고 재사용하는 것이 유용할 수 있습니다. 이러한 경우 세션을 유지하기 위해 requests 라이브러리의 세션 객체를 사용할 수 있습니다. 세션을 사용하면 여러 요청 간에 헤더, 쿠키 등과 같은 상태를 유지할 수 있습니다.

세션 생성하기

세션을 사용하려면 먼저 세션 객체를 생성해야 합니다. 아래의 코드는 requests 세션을 생성하는 방법을 보여줍니다.

import requests

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

세션으로 요청 보내기

세션 객체를 사용하여 일련의 요청을 보낼 수 있습니다. 세션 객체가 요청을 보낼 때마다 해당 세션에 대한 상태 및 인증 정보를 유지합니다. 아래의 코드는 POST 요청을 세션 객체로 보내는 예제입니다.

import requests

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

# 요청을 보낼 URL
url = "https://example.com/api/login"

# POST 요청 보내기
response = session.post(url, data={"username": "admin", "password": "password"})

# 응답 확인
print(response.text)

세션에서 쿠키 가져오기

세션 객체를 사용하면 이전 요청에서 수신한 쿠키를 저장하고, 추후 요청에서 다시 사용할 수 있습니다. 쿠키는 요청 헤더에서 자동으로 설정됩니다. 아래의 코드는 세션에서 쿠키를 가져오는 예제입니다.

import requests

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

# 로그인 요청 보내기
response = session.post("https://example.com/api/login", data={"username": "admin", "password": "password"})

# 세션에서 쿠키 가져오기
cookies = session.cookies.get_dict()

# 쿠키 출력
print(cookies)

세션 유지하기

세션을 유지하려면 해당 세션 객체를 사용하여 추가 요청을 보내면 됩니다. 세션 객체는 세션에 저장된 상태를 유지하므로 매번 인증 정보를 다시 전달할 필요가 없습니다. 아래의 코드는 세션을 사용하여 여러 요청을 보내는 예제입니다.

import requests

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

# 로그인 요청 보내기
session.post("https://example.com/api/login", data={"username": "admin", "password": "password"})

# 추가 요청 보내기
response1 = session.get("https://example.com/api/data1")
response2 = session.get("https://example.com/api/data2")

# 응답 확인
print(response1.text)
print(response2.text)

세션 종료하기

모든 요청을 마치고 세션을 종료하려면 close() 메서드를 사용하여 세션을 닫을 수 있습니다. 세션을 닫으면 해당 세션과 연결된 리소스가 정리됩니다.

import requests

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

# 세션 사용

# 세션 종료
session.close()

세션을 사용하여 연결 유지와 인증 정보 유지를 쉽게 할 수 있습니다. 세션 객체를 사용하면 다수의 요청을 처리하는 과정에서 편리하게 상태를 관리할 수 있습니다.