백엔드
Asyncio 없이 싱글 스레드 논 블락킹 비동기 서버 만들기 (Feat. Event Loop 이해하기)
두줄요약
asyncio 없이 소켓과 selectors만으로 비동기 서버를 단계적으로 구현해보았습니다. 이를 통해 asyncio 이벤트 루프가 I/O 이벤트를 기다리고 처리하는 원리를 설명했습니다.
핵심 내용
- asyncio 없이 socket만으로 싱글 스레드 논블로킹 비동기 echo 서버를 단계적으로 구현
- blocking accept/recv를 non-blocking으로 바꾸고, 여러 커넥션을 리스트로 순회하며 처리
- selectors를 이용해 I/O 이벤트를 구독하고, OS의 epoll/kqueue/IOCP에 폴링을 위임
- asyncio 이벤트 루프도 내부적으로 selectors와 while 루프를 사용해 이벤트를 처리하는 구조로 설명
