소개
aiohttp는 Python에서 비동기 웹 애플리케이션을 만들기 위해 사용되는 파이썬 라이브러리입니다. 이 라이브러리를 사용하면 효율적으로 비동기적으로 웹 서버를 구축하고, 클라이언트 요청을 처리할 수 있습니다. 이 글에서는 aiohttp를 사용하여 웹 서버에서 정적 리소스를 제공하는 방법에 대해 알아보겠습니다.
준비물
aiohttp를 사용하기 전에, 우선 aiohttp 패키지를 설치해야 합니다. 아래의 명령어를 사용하여 설치할 수 있습니다.
pip install aiohttp
코드 예제
아래의 코드 예제는 aiohttp를 사용하여 웹 서버에서 정적 리소스를 제공하는 간단한 예시입니다.
from aiohttp import web
async def handle(request):
path = request.path.lstrip('/')
try:
# 파일을 읽어와서 response에 전송
with open(path, 'rb') as f:
return web.Response(body=f.read())
except FileNotFoundError:
# 파일이 없는 경우 404 에러를 반환
return web.Response(status=404)
app = web.Application()
app.router.add_get('/{tail:.*}', handle)
web.run_app(app)
이 예제에서는 클라이언트로부터의 요청을 처리하기 위해 handle
함수를 정의합니다. 함수는 클라이언트가 요청한 파일을 로드하여 응답으로 반환합니다. 파일이 없는 경우 404 에러를 반환합니다.
app
객체를 생성한 후 app.router.add_get
메서드를 사용하여 경로와 핸들러 함수를 등록합니다. 이렇게 등록한 핸들러 함수는 클라이언트의 요청과 일치하는 경로로 요청이 올 때마다 실행됩니다.
마지막으로 web.run_app
메서드를 사용하여 웹 서버를 실행합니다.
실행하기
위의 코드를 server.py
파일로 저장한 후에 아래의 명령어로 서버를 실행할 수 있습니다.
python server.py
서버가 실행되면 클라이언트가 http://localhost:8080/파일경로
로 접속하여 정적 리소스를 요청할 수 있습니다.
결론
aiohttp를 사용하면 Python으로 비동기 웹 애플리케이션을 쉽게 작성할 수 있습니다. 이 글에서는 aiohttp를 사용하여 웹 서버에서 정적 리소스를 제공하는 방법을 살펴보았습니다. 추가적인 기능을 구현하고 싶다면 aiohttp의 공식 문서를 참고하시기 바랍니다.
참고 자료
- aiohttp 공식 문서: https://docs.aiohttp.org/