코샵
끄적끄적 코딩 공방
코샵

인기 글

  • 분류 전체보기 (475) N
    • MongoDB (4)
    • 일기장 (4)
    • Unity (138)
      • Tip (41)
      • Project (1)
      • Design Pattern (8)
      • Firebase (6)
      • Asset (2)
    • 파이썬 (127)
      • Basic (40)
      • OpenCV (8)
      • Pandas (15)
      • PyQT (3)
      • SBC(Single Board Computer) (1)
      • 크롤링 (14)
      • Fast API (29)
      • Package (6)
    • Linux (4)
    • C# (97)
      • Algorithm (11)
      • Window (7)
    • TypeScript (44) N
      • CSS (6) N
    • Git (11)
    • SQL (5)
    • Flutter (10)
      • Tip (1)
    • System (1)
    • BaekJoon (6)
    • Portfolio (2)
    • MacOS (1)
    • 유틸리티 (1)
    • 서비스 (6)
    • 자동화 (3)
    • Hobby (10)
      • 물생활 (10)
      • 식집사 (0)
전체 방문자
오늘
어제

최근 댓글

최근 글

반응형
hELLO · Designed By 정상우.
코샵

끄적끄적 코딩 공방

파이썬/크롤링

Requests : HTTP 요청 최적화

2024. 2. 6. 10:19
반응형

Python의 requests 모듈은 HTTP 요청을 보내고 응답을 처리하는 데 사용되는 강력하면서도 간편한 도구입니다. 그러나 대규모 또는 빈번한 요청을 다루는 경우, 코드의 효율성을 고려하여 최적화할 필요가 있습니다. 이 블로그 글에서는 requests 모듈을 사용하여 HTTP 요청을 최적화하는 다양한 방법을 살펴보겠습니다.

 

1. 세션 유지

requests의 Session 객체를 사용하면 연속적인 요청 간에 상태를 유지할 수 있습니다. 이를 통해 동일한 서버에 여러 요청을 보낼 때 발생하는 연결 설정 오버헤드를 줄일 수 있습니다.

import requests

session = requests.Session()

# 여러 요청에서 동일한 세션 사용
response1 = session.get('https://naver.com/')
response2 = session.get('https://m.naver.com')

 

2. Keep-Alive 활성화

HTTP Keep-Alive를 활성화하여 여러 요청 간에 동일한 TCP 연결을 유지할 수 있습니다. 이는 연결 설정 및 해제 오버헤드를 줄여줍니다.

import requests

# Keep-Alive 활성화
response = requests.get('https://example.com', headers={'Connection': 'keep-alive'})

 

3. 헤더 최적화

불필요한 헤더를 제거하거나 최소한으로 유지하여 네트워크 대역폭을 절약하고 서버와의 통신을 최적화할 수 있습니다.

import requests

# 필요한 헤더만 유지
headers = {'User-Agent': 'my-app'}

response = requests.get('https://example.com', headers=headers)

 

4. 비동기 요청

asyncio 라이브러리와 httpx 등의 비동기 HTTP 라이브러리를 활용하여 동시에 여러 요청을 처리할 수 있습니다.

import asyncio
import httpx

async def fetch(url):
    async with httpx.AsyncClient() as client:
        response = await client.get(url)
        return response.text
        
urls = ['https://naver.com', 'https://google.com']

# 비동기 요청
results = asyncio.run(asyncio.gather(*(fetch(url) for url in urls)))

 

마무리

이러한 최적화 기법을 사용하면 Python에서 HTTP 요청을 효율적으로 다룰 수 있습니다. requests 모듈을 더 효과적으로 활용하여 네트워크 성능을 향상시키고, 더 빠르고 안정적인 애플리케이션을 개발할 수 있습니다. 계속해서 코드를 리팩토링하고 최적화하여 프로젝트의 성능을 꾸준히 개선해보세요.

저작자표시 비영리 변경금지 (새창열림)

'파이썬 > 크롤링' 카테고리의 다른 글

requests vs aiohttp - HTTP 요청의 모든 것  (0) 2025.01.11
VPN과 프록시 서버  (0) 2024.11.30
크롤링이 가능한 사이트인지 확인하는 방법  (0) 2024.02.04
크롤링을 할 때 셀레니움이 필요한지 확인하는 방법  (0) 2024.02.03
Selenium 4.1.0에서 headless 설정 변경  (0) 2024.02.01
    '파이썬/크롤링' 카테고리의 다른 글
    • requests vs aiohttp - HTTP 요청의 모든 것
    • VPN과 프록시 서버
    • 크롤링이 가능한 사이트인지 확인하는 방법
    • 크롤링을 할 때 셀레니움이 필요한지 확인하는 방법
    코샵
    코샵
    나의 코딩 일기장

    티스토리툴바