본문 바로가기

이미지 매크로

FastAPI - 파이썬으로 웹서버 만들기

반응형

무료 매크로 프로그램 다운로드

http://ngmsoftware.com/bbs/board.php?bo_table=product1&wr_id=32 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#매크로 #매크로프로그램 #메크로 #g매크로 #마우스매크로 #키보드매크로 #엑셀매크로 #키매크로 #수강신청매크로 #로지텍마우스매크로 #매크로키보드 #파이썬매크로 #매크로뜻 #매크로마우스 #로지텍매크로 #ld플레이어매크로 #오토마우스매크로 #키보드마우스매크로 #오토핫키매크로 #이미지매크로 #이미지인식매크로 #하드웨어매크로 #화면인식매크로 #선착순구매매크로 #이미지서치매크로 #한글매크로


 

안녕하세요. 엔지엠소프트웨어입니다. 매크로에 대한 이야기는 아니구요^^; 오늘은 파이썬으로 웹서버를 어떻게 만드는지 알아보려고 합니다. 일반적으로 웹서버는 IIS(Internet Information Service)나 아파치 톰캣(Apache Tomcat) 또는 제우스(JUES), Node.js, 장고(django)등등이 있습니다. 파이썬에서는 대부분 장고나 플라스크(Flask)를 사용하고 있습니다. 그런데, 새롭게 등장한 FastAPI가 점유율을 빠르게 올리고 있어서 한번 사용해보려고 합니다.

 

 

FastAPI는 django와 Flask보다 약 2배 빠릅니다. 코드도 간결하고, 배우기가 쉽다는 장점이 있습니다. 아래는 20개 쿼리를 요청하고 응답 받은 밴치마킹 자료입니다. FastAPI가 가장 성능이 좋다는걸 알 수 있습니다. Flask와 django는 중하위에 위치하고 있군요. 이렇다보니 FastAPI를 사용하고자 하는 회사들이 많아지는거 같습니다.

 

 

FastAPI가 약 2배 이상 빠른 이유는 기본적으로 비동기 처리를 지원하기 때문입니다. 엔지엠 매크로에도 서브 스크립트나 타이머, 예약, 스케줄러와 같은 기능들은 비동기를 지원하고 있습니다. 비동기는 특정 코드 또는 동작이 오래 걸리면 알아서 동작하도록 놔두고 그 다음 코드를 실행하도록 해줍니다. 좀 더 쉬운 예를 들어보면, 윈도우 프로그램을 사용할 때 어떤 버튼 또는 동작을 수행했을 때 해당 동작이 완료될 때까지 프로그램이 멈춘것과 같은 현상을 본적이 있을겁니다. 이런 경우가 동기 방식입니다. 버튼을 누른 후 동작이 완료될 때까지 다른 어떤 작업도 할 수 없는게 동기(Synchronous) 방식입니다. 비동기(Asynchronous)는 이와 반대겠죠^^? 아래 그림을 보면 좀 더 이해하기 쉬울겁니다.

 

 

이제 비동기로 동작하면 왜 더 빠른지 이해했겠죠? Http 웹서버가 갖춰야할 기능을 모두 가지고 있습니다. Restful API, 데이타베이스 연동, 회원 인증, 데이타 검사, 웹소켓, async/await, type, API 문서 자동 생성도 가능합니다. Java Spring에서 스웨거(Swagger)와 같다고 생각하시면 될거 같아요. 웹프레임워크도 러닝 커브가 낮은 곳으로 이동하고 있습니다. Angular에서 React로~ 그리고, 현재는 Vue를 많이 쓰는거 같습니다. 실제로 성능이 사용 편의성 때문에 FastAPI로 넘어가는건 아닙니다. 기존 django나 Flask의 아키텍쳐에서 처리하기 어려운 마이크로 서비스(Micro Service)를 쉽게 구현할 수 있기 때문입니다.

 

 

마이크로 서비스가 요즘 대세이긴 하죠~ C#이나 Java에서도 마이크로 서비스를 구현하기 위한 여러가지 아키텍쳐나 방법론들이 쏟아지고 있으니까요. FastAPI에 대한 소개는 이정도로 해두고요. 실제로 얼마나 쉽게 코딩이 가능한지 테스트를 해보도록 하겠습니다. 이 예제를 학습하려면 파이썬과 Visual Studio Code가 설치되어 있어야 합니다. 파이썬 개발환경을 만드는 방법은 아래 글을 참고하세요.

[ 파이썬 설치 방법 ]

[ 파이썬 개발 환경 및 예제들 ]

 

Visual Studio Code를 실행한 후 워크 스페이스(Work Space)폴더를 열어줍니다. 그리고, 새 파일을 추가하세요. 저는 main.py로 저장했습니다.

 

 

개발하기 위한 준비는 완료가 되었습니다. FastAPI 패키지를 설치해야 하는데요. 아래와 같이 하단의 터미널에서 "pip install fastapi"를 입력 후 엔터를 쳐보세요. 제가 이 글을 작성하는 시점에 FastAPI의 최신 버전은 3.6.1인가 봅니다.

 

 

그리고, 실시간 미리보기를 하고 싶으시면 유비콘 패키지도 같이 설치해주시면 됩니다.

pip install "uvicorn[standard]"

 

 

이렇게해서 환경 구성은 마무리가 되었습니다. 다시 main.py로 돌아와서 서버를 만들기 위해 아래 2줄 코딩을 추가하세요.

from fastapi import FastAPI
app = FastAPI()

 

서버에 실제 기능을 추가 해볼께요. 기본적으로 API를 만들기 위한 기본적인 템플릿이 존재합니다. 아래와 같이 3줄을 추가하세요. 기본적으로 이렇게 추가해야 합니다. 개발자분들이 아래 코드를 보면~ 어디를 어떻게 바꾸면 어떻게 동작하겠구나가 머리속에 그려질겁니다. 왜냐하면 API나 함수의 사용 방법은 어떤 언어든지 비슷하기 때문입니다.

@app.get("/")
def ngmsoftware():
    return "Hello ngmsoftware!"
 

 

이 3줄은 비즈니스 로직이 들어가 있지는 않지만, API를 제공하기 위한 템플릿으로 이해하면 됩니다. 그래서, 필요한 서비스가 있을 때마다 아래와 같이 코드를 추가해주면 됩니다.

 
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def ngmsoftware():
    return "Hello ngmsoftware!"

@app.get("/")
def 엔지엠매크로():
    return "안녕하세요! 반갑습니다."

 

 

@app.get 또는 @app.post를 사용할 수 있습니다. get은 주소로 인자를 넘겨주고 post는 form으로 인자를 넘겨줍니다. 이 부분은 나중에 기회가 되면 좀 더 자세하게 설명하도록 할께요. 우선, get 뒤에 "/"는 루트를 말합니다. 그래서, google.com, naver.com, kakao.com과 같이 처음에 보여질 화면을 말합니다. 그 다음 ngmsoftware는 접근하는 경로이므로 용도에 맞게 자유롭게 작명하시면 됩니다. 함수명 만들듯이요^^; 이름 짓는게 가장 어렵지만요~ 이제 잘 동작하는지 테스트 해볼까요? 터미널에서 "uvicorn main:app --reload"를 입력한 후 엔터를 쳐보세요.

 


[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]

 

원본 글 보기

http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#비활성매크로 #g102매크로 #철권매크로 #레이저마우스매크로 #ghub매크로 #녹화매크로 #키보드반복매크로 #로지텍마우스광클매크로 #플라스크매크로 #윈도우매크로 #비활성g매크로 #오토매크로 #자동사냥 #주식매크로 #오토핫키키보드 #오토핫키마우스 #오토핫키이미지 #지존오토 #기계식매크로 #하드웨어매크로 #무한반복매크로 #대량이메일발송매크로 #엑셀VBA매크로 #주식모니터링매크로

반응형