[파이썬] aiohttp 비동기 HTTP 서버 시작하기

비동기 웹 개발을 위해 aiohttp 라이브러리를 사용하는 Python을 고려해 보신적이 있나요? aiohttp는 신속하고 확장성 있는 비동기 HTTP 웹 서버를 작성하기 위한 강력한 프레임워크입니다. 이번 블로그 포스트에서는 aiohttp를 사용하여 간단한 HTTP 서버를 어떻게 시작할 수 있는지 알아보겠습니다.

1. aiohttp 설치하기

pip install aiohttp

먼저 aiohttp를 설치해야 합니다. 위의 명령어를 사용하면 손쉽게 aiohttp를 설치할 수 있습니다.

2. 간단한 HTTP 서버 작성하기

이제 aiohttp를 사용하여 간단한 HTTP 서버를 작성해보겠습니다. 아래의 코드를 server.py로 저장해주세요.

import aiohttp
from aiohttp import web

async def handle(request):
    return web.Response(text="안녕하세요, aiohttp 서버입니다!")

app = web.Application()
app.router.add_get('/', handle)

web.run_app(app)

위의 예제 코드는 aiohttp에서 제공하는 web 모듈을 사용하여 handle 함수를 작성하고, 이를 app의 루트 경로(/)에 맵핑하는 방식으로 간단한 웹 애플리케이션을 구성합니다.

3. HTTP 서버 실행하기

서버를 실행하기 위해 터미널에서 다음 명령어를 실행하세요.

python server.py

서버가 성공적으로 시작되면, http://localhost:8080로 접속하여 “안녕하세요, aiohttp 서버입니다!”라는 메시지가 표시되는지 확인해보세요.

4. 요청 및 응답 처리하기

본 예제는 단순한 “Hello, World!” 메시지를 응답으로 돌려주는 예제입니다. 하지만 aiohttp를 사용하면 요청 및 응답을 다양한 방식으로 처리할 수 있습니다. 예를 들어, JSON 데이터를 응답으로 전송하거나, 데이터베이스와의 상호작용 등의 작업을 수행할 수 있습니다.

import aiohttp
from aiohttp import web
import json

async def handle(request):
    data = {
        'message': '안녕하세요, aiohttp 서버입니다!'
    }
    return web.json_response(data)

app = web.Application()
app.router.add_get('/', handle)

web.run_app(app)

위의 코드는 JSON 응답을 생성하는 예제입니다. handle 함수는 web.json_response를 사용하여 data 딕셔너리를 JSON으로 변환하여 응답으로 반환합니다.

5. 정적 파일 서빙하기

aiohttp는 정적 파일을 서빙하는 기능도 제공합니다. 예를 들어, HTML, CSS, JavaScript 파일 등을 제공하기 위해 사용할 수 있습니다.

import aiohttp
from aiohttp import web

async def handle(request):
    return web.Response(text="Hello, World!")

app = web.Application()
app.router.add_get('/', handle)
app.router.add_static('/static/', path='./static')

web.run_app(app)

위의 코드에서 app.router.add_static 함수를 사용하여 정적 파일을 제공할 경로(/static/)를 지정합니다. path 매개변수에는 정적 파일이 위치한 디렉토리 경로를 설정합니다.

결론

이제 aiohttp를 사용하여 비동기 HTTP 서버를 시작하는 방법을 알아보았습니다. aiohttp는 강력하고 유연한 웹 프레임워크로, 비동기 웹 애플리케이션을 쉽게 개발할 수 있도록 도와줍니다. aoihttp의 다양한 기능과 옵션에 대해 더 알아보기 위해 공식 문서를 참고해보세요!