파이썬/Package

aiohttp.ClientSession: 비동기 HTTP 클라이언트 세션

코샵 2024. 11. 4. 13:07
반응형

Python의 aiohttp 라이브러리는 비동기 HTTP 클라이언트와 서버를 구현할 수 있는 강력한 도구입니다. 그중에서도 aiohttp.ClientSession은 비동기 HTTP 요청을 보내는 데 핵심적인 역할을 합니다.

aiohttp.ClientSession이란?

aiohttp.ClientSession은 비동기 HTTP 클라이언트 세션을 나타냅니다. 이 세션은 다음과 같은 기능을 제공합니다:

  1. 연결 관리: 세션은 HTTP 연결을 생성, 유지, 재사용합니다. 이를 통해 성능을 향상시킬 수 있습니다.
  2. 쿠키 관리: 세션은 쿠키를 자동으로 관리하여 연속적인 요청을 처리할 수 있습니다.
  3. 자동 인증: 세션은 자동으로 인증 정보를 추가하여 인증이 필요한 API 요청을 처리할 수 있습니다.
  4. 연결 풀링: 세션은 연결 풀링을 통해 동일한 호스트에 대한 여러 요청을 효율적으로 처리할 수 있습니다.

aiohttp.ClientSession 사용 방법

aiohttp.ClientSession을 사용하려면 다음과 같은 코드를 작성하면 됩니다:

import asyncio
import aiohttp

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get('https://www.naver.com') as response:
            print(await response.text())

asyncio.run(main())

이 코드에서는 다음과 같은 작업이 이루어집니다:

  1. aiohttp.ClientSession 객체를 생성합니다. 이때 async with 블록을 사용하여 세션의 수명 주기를 관리합니다.
  2. 세션의 get() 메서드를 호출하여 비동기 HTTP GET 요청을 보냅니다. 이때도 async with 블록을 사용하여 응답의 수명 주기를 관리합니다.
  3. 응답의 text() 메서드를 사용하여 응답 본문을 문자열로 가져옵니다.

aiohttp.ClientSession 구성 옵션

aiohttp.ClientSession은 다양한 옵션을 통해 세션의 동작을 사용자 정의할 수 있습니다. 일부 주요 옵션은 다음과 같습니다:

  • headers: 기본 HTTP 헤더를 설정합니다.
  • cookies: 기본 쿠키를 설정합니다.
  • auth: 기본 인증 정보를 설정합니다.
  • connector: 연결 풀링 동작을 사용자 정의할 수 있는 커넥터를 설정합니다.
  • timeout: 요청 시간 초과 값을 설정합니다.

예를 들어, 다음과 같이 세션을 구성할 수 있습니다:

async with aiohttp.ClientSession(
    headers={'User-Agent': 'my-custom-user-agent'},
    cookies={'session_id': 'abc123'},
    auth=aiohttp.BasicAuth('username', 'password'),
    connector=aiohttp.TCPConnector(limit=10),
    timeout=aiohttp.ClientTimeout(total=60)
) as session:
    # 세션 사용 코드
    pass

이처럼 aiohttp.ClientSession은 비동기 HTTP 클라이언트 세션을 구현하는 데 핵심적인 역할을 합니다. 연결 관리, 쿠키 관리, 인증 처리, 연결 풀링 등의 기능을 통해 효율적이고 강력한 비동기 HTTP 클라이언트 애플리케이션을 개발할 수 있습니다.