이번 포스트에서는 Python의 aiohttp
라이브러리를 사용하여 비동기적으로 API 서버를 만드는 방법에 대해 알아보겠습니다. aiohttp
는 asyncio
를 기반으로 한 HTTP 클라이언트 및 서버 프레임워크로, 비동기적으로 네트워크 요청과 응답을 다룰 수 있습니다.
1. aiohttp
라이브러리 설치하기
먼저 aiohttp
라이브러리를 설치해야 합니다. pip를 사용하여 설치합니다.
pip install aiohttp
2. 비동기적으로 API 서버 만들기
아래는 간단한 예제 코드로 비동기적으로 API 서버를 생성하는 방법을 보여줍니다.
import aiohttp
from aiohttp import web
async def handle(request):
name = request.query.get('name', 'Anonymous')
return web.Response(text=f'Hello, {name}!')
app = web.Application()
app.router.add_get('/', handle)
web.run_app(app)
위 코드에서는 /
경로에 대한 GET 요청을 처리하는 핸들러 함수 handle
을 작성했습니다. 이 함수는 쿼리 매개변수 name
을 받아와서 해당하는 인사 메시지를 반환합니다. 이후 web.Application
을 통해 애플리케이션을 생성하고, app.router
를 통해 경로와 핸들러 함수를 연결합니다. 마지막으로 web.run_app
을 호출하여 서버를 시작합니다.
3. 비동기적으로 요청 보내기
aiohttp
를 사용하면 비동기적으로 다른 서버에 요청을 보낼 수도 있습니다. 아래는 간단한 GET 요청을 비동기적으로 보내는 예제 코드입니다.
import aiohttp
import asyncio
async def main():
async with aiohttp.ClientSession() as session:
async with session.get('http://api.example.com') as response:
print(await response.text())
# 결과 출력
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
위 코드에서는 aiohttp.ClientSession
을 사용하여 세션을 생성하고, session.get
메서드로 GET 요청을 보냅니다. 그리고 요청의 응답을 비동기적으로 받아와서 response.text()
를 호출하여 결과를 얻습니다.
결론
aiohttp
를 사용하면 Python에서 비동기적으로 API 서버를 만들고 네트워크 요청을 다룰 수 있습니다. 이를 통해 더욱 효율적이고 반응성 있는 서버를 개발할 수 있습니다. aiohttp
의 자세한 기능과 사용법에 대해서는 공식 문서를 참고하시기 바랍니다.
aiohttp
공식 문서: https://docs.aiohttp.org/aiohttp
GitHub 저장소: https://github.com/aio-libs/aiohttp