본문 바로가기
IT/Python

[Python] 파이썬 aiohttp 라이브러리

by 쿠이모 2023. 11. 16.

파이썬 aiohttp 모듈은 비동기 HTTP 클라이언트 및 서버를 구축하기 위한 라이브러리이다. asyncio 모듈과 함께 사용된다. aiohttp는 고성능 및 오류 처리를 위한 다양한 기능을 제공한다.

 

 

설치

aiohttp는 pip를 사용하여 설치할 수 있고 명령어는 다음과 같다.

pip install aiohttp
# pip install aiohttp==3.7.3	# 특정 버전 설치

 

 

기본 사용법

aiohttp, asynio 를 import 해준다.

import asyncio
import aiohttp

 

 

GET 요청 예제

아래는 aiohttp를 사용한 간단한 GET 요청 예제이다. async with 구문을 사용하여 클라이언트를 생성하고 요청을 보낼 수 있다.

import asyncio
import aiohttp

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

async def main():
    async with aiohttp.ClientSession() as session:
        html = await fetch(session, 'https://www.example.com')
        print(html)

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

fetch 함수를 정의하여 aiohttp의 get() 메서드를 사용하여 GET 요청을 보낸다. async with 구문을 사용해 클라이언트 세션을 생성하고 요청을 보낸 후 응답을 받아올 수 있다.

 

 

POST 요청 예제

aiohttp를 사용한 POST 요청 예제.

JSON 데이터를 포함하는 POST 요청을 보낸다.

import asyncio
import aiohttp
import json

async def fetch(session, url, data):
	headers = {'Content-Type':'application/json'}
    async with session.post(url, data=json.dumps(data), headers=headers)
as response:
	return await response.text()
    
async def main():
	async with aophttp.ClientSession() as session:
    	data = {'name': 'John Doe', 'age': 30}
        response = await fetch(session, 'https://naver.com/api', data)
        print(response)

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

위 예제에서 fetch 함수를 사용하여 aiohttp의 post() 메서드를 통해 POST 요청을 보낸다. 요청에는 JSON 데이터가 포함되어 있고, Content-Type 헤더를 설정해 데이터 형식을 지정한다.