[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 요청을 보낼 수 있습니다. 이는 비동기 웹 개발을 할 때 유용한 기능 중 하나이며, 성능 향상에도 도움을 줄 수 있습니다.