1. Python Requests Session = 연결 유지 = 요청 속도 향상 !!
Python Requests 모듈에서 세션(Session)을 사용하는 방법을 알아보겠습니다.
Requests 모듈은 HTTP 요청을 쉽게 보낼 수 있도록 도와주는 라이브러리입니다.
import requests
response = requests.get("https://httpbin.org/get")
print(response.text)
단순한 GET/POST 요청뿐 아니라 세션(Session) 기능을 사용하면 작업이 훨씬 더 효율적입니다.
영상으로 강의보기
2. 세션(Session)은 무엇인가?
웹에서 세션(Session)은 여러 번의 HTTP 요청 사이에서 상태(state)를 유지하는 메커니즘입니다.
- 서버는 개별 사용자를 구분하기 위해 세션 ID를 발급하고 이를 쿠키(cookie) 형태로 클라이언트에게 전달합니다.
- 이후 같은 브라우저가 요청을 보낼 때 세션 ID를 통해 상태를 유지합니다.
Python Requests에서 세션을 사용하면 동일한 객체를 통해 쿠키, 인증 토큰 등을 자동으로 공유할 수 있습니다.
3. Session 객체 생성하기
Requests에서 세션 객체를 생성하는 방법:
import requests
# 세션 객체 생성
s = requests.Session()
# 세션 객체로 GET 요청
response = s.get("https://httpbin.org/get")
print(response.text)
이제 s
객체를 사용하는 동안 쿠키 및 인증정보가 유지됩니다.
4. 예시: 쿠키를 이용해 데이터 저장하기
아래는 세션 객체로 쿠키를 설정(setCookieUrl)한 뒤, 조회(getCookiesUrl)하는 예시입니다.
import requests
def example_persist_cookies():
s = requests.Session()
set_url = "https://httpbin.org/cookies/set"
get_url = "https://httpbin.org/cookies"
s.get(set_url, params={"userName": "John99"})
s.get(set_url, params={"location": "NewYork"})
response = s.get(get_url)
print(response.text)
if __name__ == "__main__":
example_persist_cookies()
5. 세션의 성능 향상 효과
세션 기능의 또 다른 장점은 연결 재활용(Connection Pooling) 입니다.
requests.get()
은 매 요청마다 새로운 TCP 연결을 생성합니다.- 세션을 사용하면 한 번 맺은 연결을 재활용하여 요청할 수 있습니다.
성능 비교 예제
import requests
import time
def no_session():
start = time.time()
for _ in range(20):
requests.get("https://httpbin.org/get")
print("No Session:", time.time() - start)
def with_session():
s = requests.Session()
start = time.time()
for _ in range(20):
s.get("https://httpbin.org/get")
print("With Session:", time.time() - start)
no_session()
with_session()
이렇게 코드를 실행해보면 세션 없을때는 6.8초, 세션을 사용하면 2.8초로 3배에 가까운 속도 차이를 보입니다.
20개의 요청이 아니라, Requests 수가 훨씬 더 많아지면 차이가 체감이 됩니다 ㅇㅇ..
프로그램 돌리고 돌아오면 no session은 작동하느라 계속 돌고있음
6. 정리
- 세션(Session)을 사용하면 상태를 유지하고 성능을 개선할 수 있습니다.
requests.get()
대신Session
객체를 활용하여 코드 효율성을 높이세요.
'Python Requests 기초 강의' 카테고리의 다른 글
get cookie selenium python, requests 기초강의 3강 소스코드 (0) | 2025.01.06 |
---|---|
셀레니움(Selenium) 쿠키를 활용해 requests 쿠키값으로 사용하는 방법 (0) | 2025.01.06 |
Python requests 기초 강의 proxy server 사용하는 방법 [2강/2025년] (0) | 2024.12.31 |
파이썬 requests 기초 강의 proxy, user-agent 바꾸는 법 [1강/2025년 버전] (0) | 2024.12.30 |
Python requests 기초 강의 proxy, user-agent 바꾸는 법 [1강/소스코드 원문] (1) | 2024.12.30 |