2022. 5. 25. 22:53ㆍAbout Me/AI Tech
# Uvicorn
Python 을 위한 비동기 ASGI Web Server 구현.
Server/ Application Interface를 구축하기 위한 비동기 프레임워크에서 사용할 수 있는 공통 Tooling set.
현재 HTTP/1.1 , WebSockets 지원.
$ uvicorn example:app
from파일:파일내부함수 형식
파일위치:호출할비동기객체
>>> uvicorn.run("example:app", host="127.0.0.1", port=5000, log_level="info")
Uvicorn은 Application과 인터래션하기 위해 ASGI format을 사용한다.
Application은 다음 3가지 매개변수를 사용하는 async 기능을 가지고 있어야 한다.
- scope : 들어오는 연결에 대한 정보가 들어있는 dict
- receive : Server에서 들어오는 message를 수신할 channel
- send : Server로 발신 message를 보낼 channel
WSGI Application은 request를 받아 response를 반환하는 동기식 단일 호출가능 Application이다.
이러한 방식은 Long HTTP나 WebSocket 연결과 같이 오래 지속되는 연결은 허용 및 지원하지 않는다.
비동기 동시성 모델을 사용하면, 경량 background 작업과 같은 옵션도 가능하다. (= ASGI)
FastAPI는 Starlette와 Pydantic을 기반으로 한 API 프레임워크.
Python 3.6+으로 작성하고, 자동 type 변환, 데이터 유효성 검사, OpenAPI Scheme, API Document UI를 얻을 수 있다.
Starlette는 비동기 프레임워크로, 오래 걸리는 작업들의 경우 background에서 실행해주는 기능도 지원.
# Pydantic
FastAPI를 사용할 때, pydantic 이라는 라이브러리를 사용할 수 있다.
(Data validation / Setting Management 에 유용)
- run time에서의 type hint를 강제해주어, 안전하게 data handling 할 수 있게 해줌.
- Python type (String, Int, List, Dict 등)의 validation 지원
- config를 효과적으로 관리 (ex. ML feature가 request로 들어올 때 feature data validation)
@dataclass 데코레이션 사용 시, init mothod 작성할 필요X
pydantic.HttpUrl = 올바른 http url 인지 검증해줌
pydantic.Field(ge=1, le=10) = 1이상 10이하 인지 검증해줌
custome validation type = https://pydantic-docs.helpmanual.io/usage/types/#custom-data-types
## 피드백
백엔드 구상하기 위한 참고 템플릿.
GitHub - drivendata/cookiecutter-data-science: A logical, reasonably standardized, but flexible project structure for doing and
A logical, reasonably standardized, but flexible project structure for doing and sharing data science work. - GitHub - drivendata/cookiecutter-data-science: A logical, reasonably standardized, but ...
github.com
Q. virtualenv, Poetry 가상환경 내에서 설치한 라이브러리들은 재시작했을 때 유지되나?
'About Me > AI Tech' 카테고리의 다른 글
[Week 19- Day 5] 회고 (0) | 2022.05.28 |
---|---|
[Week 19- Day 4] 회고 (0) | 2022.05.27 |
[Week 19- Day 2] 회고 (0) | 2022.05.25 |
[Week 19- Day 1] 회고 (0) | 2022.05.23 |
두런두런 회고정리 (0) | 2022.05.22 |