반응형

- Pydantic

 

파이썬 3.7에는 클래스를 훨씬 쉽고 원할하게 생성할 수 있는 편리한 데코레이터인 데이터 클래스가 도입되었다.

 

python에 내장된 dataclass를 이용하여 data를 작성하면 뒤에 validation이라던지 예외처리, 변환등을 다시 해줘야 했기 때문에 다른 라이브러리를 찾아보게 되었다.

 

그렇게 알게 된 녀석이 pydantic이었다.

 

철저한 데이터 검증을 필요로할 때 pydantic을 사용하는것이 많은 도움이된다.

 

지금 내가 사용하고 있는 기능들중 좋다고 느낀점은

 

1. 각 클래스 내부의 값을 정의 할때 진짜 편하다.

2. 정의 한 값들의 입력값들을 정확하게 표현할 때.

3. 그 다음 기능으로 값을 넘겨줄 때 변환하기 편하다.

4. fastapi의 자동문서화(redoc) 기능과 함께 api를 관리할때 더욱 시너지가 났다.

 

 

간단한 예제를 보면

from pydantic import BaseModel,Field


class A(BaseModel):
	no : int
	id : str = Field(alias="Id",example="root",description=" - 사용자 id")

이렇게 A라는 데이터클래스와 no, id라는 값을 정의 했다고 하면

 

1. no -> int , id-> str을 입력으로 받지 않으면 에러가 나온다.

 

2. Field -> 추가한다면 alias, example, description등을 작성할 수 있고, swagger나 fastapi의 자동문서화 기능과 연결하여 편하게 사용할 수 있다.

 

3. docs에 id로 표기되고 내부에서는 Id라는 키값으로 사용하고, 다시 출력할 때에는 id로 출력


4. 그 외에도 많은 기능이 있다.

data=A(no=1,Id='root')
data.dict()

=> {"no":1,"id":"root"}

 

위와같이 사용할 수 있어서. 정말 도움이 많이 되었다. 

앞으로 더 많이 공부 해야겠다고 생각든다.

 

더 많은 기능은 아래의 공홈에서 찾아보길..

 

 

https://pydantic-docs.helpmanual.io/

반응형

'work > web' 카테고리의 다른 글

flask 비동기 처리 해보기 -> FASTAPI 사용하기  (0) 2022.07.26
flask, flask_restx, swagger  (0) 2022.07.22
반응형

딥러닝 및 머신러닝의 학습을 하기 위하여 REST를 활용한 인터페이스를 구축할 예정이다.

 

프로세스는 대략 아래와 같다.

 

flask -> flask_restx -> api -> 학습 // swagger를 통한 소통

 

하지만 딥러닝및 머신러닝의 학습시간이 길어지면 중간에 비동기 처리를 통하여

학습을 실행시키고, 사용자에게는 응답메세지를 주고 학습이 끝나면 또 응답을 줘야한다.

그렇지 않으면 몇일이 걸리는 학습모델을 돌리는동안 아무런 응답을 받지 못 할것이다.

 

그리고 여기서 한가지 더 고려해야할 부분은 학습을 도중에 중지 시킬수도 있어야한다.

 

비동기처리를 위해 어떤것을 해야 하는지 찾아보니

async 및 redirect를 활용하여 위의 요구기능을 처리 해 볼수 있을것 같다.

 

 

-------------약 2주후-----------

처음 구축해 봐서 그냥 알려준대로 툴을 선택 했는데 조금이라도 더 찾아볼껄 그랬다.

비동기화와 같은 요구사항은 왜 초안을 다 만들고 알려주는것인가..ㅠ

-------------약 2주후-----------

 

라고생각했는데 2주간의 삽질 끝에 flask와 restx로는 프로젝트에서 원하는 프로세스를 만들수 없다는것을

알게 되었다.

그래서 찾아본 결과 대안으로 ASGI( Asynchronous Server Gateway Interface) & fastapi라는 것을 알게되었고.

간단한 테스트를 해본결과 원하는 프로세스가 잘 실행된다!

 

차근차근 학습해서 더 멋진 서비스를 만들어보자!

반응형

'work > web' 카테고리의 다른 글

pydantic / dataclass [파이썬 / python]  (0) 2022.10.11
flask, flask_restx, swagger  (0) 2022.07.22
반응형

중요한 사항

 

1. Flask -> REST를 이용해서 서비스 제공( 데이터 전처리, 딥러닝, 머신러닝 모델의 학습 설계, 학습, 확인)

2. REST API의 자동명세 필요 (기존 엑셀작업 -> 자동 명세)

3. 파일 및 기능이 점점 늘어나면서 관리 필요

 

flask-restx를 이용하여 rest를 서비스하고

swagger를 사용하여 문서화하여 공유 예정 

 

Flask-restx란?

  • flask-restful 라이브러리 중 하나
  • Swagger라는 rest api를 문서화해주는 도구를 지원

Swagger란?

  • 개발한 rest api를 편리하게 문서화 해준다.

 ex ) https://www.data.go.kr/data/15102239/openapi.do#/

 

기상청_전국 해수욕장 날씨 조회서비스

전국 해수욕장의 날씨 예보(초단기예보,단기예보)와 조석 정보, 파고 정보, 일출일몰 정보, 수온 정보를 제공하는 서비스

www.data.go.kr

 

  • 그래서 이러한 문서를 통해서 프로젝트를 관리하고, 제 3의 사용자및 협업 대상이 편리하게 api를 테스트, 호출해볼수 있음
반응형

'work > web' 카테고리의 다른 글

pydantic / dataclass [파이썬 / python]  (0) 2022.10.11
flask 비동기 처리 해보기 -> FASTAPI 사용하기  (0) 2022.07.26

+ Recent posts