About Me/AI Tech

[Week 19- Day 3] 회고

green_ne 2022. 5. 25. 22:53

# 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 가상환경 내에서 설치한 라이브러리들은 재시작했을 때 유지되나?

 

 

 

 

 

 

 

반응형