본문 바로가기
Python Requests 기초 강의

Python Requests Session 사용법, 속도와 효율 모두 잡기

by 파이썬코딩대학 2025. 1. 4.

python requests session 사용방법 A to Z 입니다
python session requests 사용방법 A to Z 입니다

 

 

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 객체를 활용하여 코드 효율성을 높이세요.