[python] aiohttp를 사용하여 동시에 여러 개의 HTTP 요청 보내기

파이썬에서 동시에 여러 개의 HTTP 요청을 보내는 방법 중 하나는 aiohttp 라이브러리를 사용하는 것입니다. aiohttp는 비동기 웹 클라이언트 라이브러리로, asyncio와 함께 사용하여 비동기 HTTP 요청을 손쉽게 처리할 수 있습니다.

aiohttp 설치하기

aiohttp를 사용하기 위해서는 먼저 설치해야 합니다. 아래의 명령어를 사용하여 aiohttp를 설치할 수 있습니다.

pip install aiohttp

동시에 여러 개의 HTTP 요청 보내기

다음은 aiohttp를 사용하여 동시에 여러 개의 HTTP 요청을 보내는 방법을 보여주는 간단한 예제입니다.

import asyncio
import aiohttp

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def fetch_multiple(urls):
    async with aiohttp.ClientSession() as session:
        tasks = []
        for url in urls:
            task = asyncio.ensure_future(fetch(session, url))
            tasks.append(task)
        responses = await asyncio.gather(*tasks)
        return responses

async def main():
    urls = ["https://www.example.com", "https://www.google.com", "https://www.github.com"]
    responses = await fetch_multiple(urls)
    for response in responses:
        print(response)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

위의 코드는 fetch 함수를 정의하여 해당 URL에 대한 HTTP GET 요청을 보내고, fetch_multiple 함수를 사용하여 여러 개의 URL에 대한 요청을 동시에 보내는 예제입니다. main 함수에서는 fetch_multiple 함수를 호출하고, 이를 실행하여 결과를 출력합니다.

fetch_multiple 함수는 비동기로 여러 개의 HTTP 요청을 보내며, aiohttp.ClientSession을 사용하여 클라이언트 세션을 생성합니다. 각 요청은 별도의 태스크로 생성되어 asyncio.gather를 통해 일괄적으로 처리됩니다.

결론

aiohttp를 사용하면 파이썬에서 손쉽게 동시에 여러 개의 HTTP 요청을 보낼 수 있습니다. 이는 비동기 웹 개발을 할 때 유용한 기능 중 하나이며, 성능 향상에도 도움을 줄 수 있습니다.

참고 자료