
기존에 DJango나 Flask은 대표되는 Python의 Web Framework, 혹은 Web Application Libary라고 할 수 있다. Django같은 경우 너무 많은 기능과 편의점을 제공해 주고 있지만, Total Solution같은 느낌이라, 사용하지도 않는 여러 기능을 그냥 떠안아야 되는 것 같은 느낌이 있다. 예를 들어서, jinja template과 DJango Admin Dashboard는 전혀 사용하지도 않는 단순한 RestAPI를 제작한다고 하면 왠지 너무 무거운것 같은 느낌이다. Flask는 이와 다르게 경량화된 Web Framwork로 Nodejs의 Express와 비교되는 Python의 Framework이다. Django와 다르게 DJango가 강제하는 ORM등을 사용할 필요는 없디 단순히 Web Solution의 아주 기본만 제공해 주고 다른것은 Third party를 설치해서 섞어 사용해야 한다.
Sanic
Sanic은 기본적으로 Flask와 거의 비슷하다. 사실 Flask이외 Flask와 비슷한 Framework를 Flask like한 Solution이라고 이야기 할 정도로 Flask가 뭔가 가장 기본중에 기본이면서 거의 비슷한 구조를 가졋다고 할 수 있다.
일다 먼저 알고 가야하는 것
- 쓰레드, 동시성 hamait.tistory.com/833
파이썬과 동시성에 대한 정리
파이썬과 동시성 *본 글은 대략 동시성 프로그래밍에 대해서 알고 있는데 파이썬은 시작 단계이며 어떤것들이 있는지 빠르게 훑어보고 싶은 분들을 위해 눈높이가 맞추어져 있음을 알려드립니�
hamait.tistory.com
- uvloop(libuv): sjh836.tistory.com/149
nodejs의 내부 동작 원리 (libuv, 이벤트루프, 워커쓰레드, 비동기)
참조문서 https://github.com/nodejs/node https://nodejs.org/ko/docs/guides/event-loop-timers-and-nexttick/ https://medium.com/the-node-js-collection/what-you-should-know-to-really-understand-the-node..
sjh836.tistory.com
Sanic vs Flask
Sanic은 Flask의 기본 모델에서 Evnet loop를 uvloop(nodejs의 event loop의 기본) 개념으로 튜닝된 버젼이다. Flask는 gunicorn등의 세팅등에 따라 조금 다르지만, MultiThread모드가 존재하는데 꼭 빠르다고만 할 수 없으며, Evnet loop 자체가 Multi-Thread가 되어 버리면 Context switch에 소모하는 시간이 급증하여, 일정 수의 입력수 이상이 되면 급격히 속도가 저하될 가능성이 있다. Sanic은 그런부분에 있어서 장점을 가지고 있는 Framework이다. 구글등에 검색을 해보면 flask와 sanic에 대한 부분을 찾아 볼 수 있다. 기본적으로는 2~4배 정도 빠른 성능을 가지고 있다고 한다. python으로 돌리는 로직 자체가 빠른건 당연히 아니고, Request에 대한 Response를 아주 여러개를 넣었을때 Async방식의 Sanic이 좀더 성능이 좋다는(머신의 리소스를 더 효율적으로 쓰고, Thread간의 Context 스위칭에 소모되는 시간이 적다) 이야기로 이해 하면 된다.
다음포스트에는 sanic을 설치 실행하여 아주 기본적은 GET API를 만들어 보겟다.
'Python' 카테고리의 다른 글
| Sanic BluePrint 사용하기 (0) | 2020.10.29 |
|---|---|
| Sanic 시작 하기(GET API 만들기) (1) | 2020.10.24 |