🤔ASGI란?
- Asynchronous Server Gateway Interface의 약자
- 비동기 web server를 의미함
- async / await 구문을 사용🤔비동기 방식이 뭔데?
- 비동기 방식은 DB나 API 연동 과정에서 발생하는 대기 시간을 낭비하지 않고, CPU가 다른 작업을 할 수 있도록 하는 방식
동기(WSGL)와 비동기(ASGL) 방식의 차이
[fastapi로 구축한 서버 모식도]
정리하자면,
- Fast api는 비동기 방식의 web server framework
- uvicorn은 비동기 방식의 http server -> ASCI
- 이 둘을 이용해서 서비스 배포가 가능
버전 : 우분투 20.04 ($ lsb release -a 명령어로 확인)
디렉토리 구성, 가상환경 구축 과정은 생략하겠습니다.
$ pip install fastapi 'uvicorn[standard]'
프레임워크 및 웹서버가 생성되었습니다.
from fastapi import FastAPI
app = FastAPI() # 인스턴스 생성
@app.get("/") # get method로 '/'에 해당하는 생성
def root():
return {'Hello':'World!'}
$ uvicorn main:app --reload
main : 모듈명을 의미합니다. # (main.py)
app : FastAPI로부터 생성된 인스턴스를 의미합니다. # app=FastAPI()
--reload : 코드 수정시 새로고침됨을 의미합니다. (Flask의 app.run(debug=True)와 같은 효과)
서버가 생성되었습니다. 8000번 포트에 아래 출력값을 확인합니다.
http request 및 response도 확인해볼까요?
endpoint란?🤔
- 특정 서비스의 client 들이 접근할 수 있는 웹 주소 (URL)을 의미