반응형

딥러닝 및 머신러닝의 학습을 하기 위하여 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
반응형

node-red를 활용하여 3개의 topic을 만들고 각각의 토픽에 랜덤 변수를 5초간격으로 송, 수신하는 node-red를 만들어라.

 

## 이전 포스트를 보고 kafka가 설치 되어있어야 한다.

 

 

https://nodejs.org/ko/

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

설치.(stable버전)

 

https://flows.nodered.org/node/node-red-contrib-kafka-manager

 

node-red-contrib-kafka-manager

Node-RED implements Kafka manager with associand associated .

flows.nodered.org

 

$ npm install kafka-node

 

 

<kafka내장 주키퍼로 시작>

$ zookeeper-server-start.sh -daemon /root/kafka/config/zookeeper.properties

$ yum install telnet
<엑세스 여부 확인>
$ telnet localhost 2181

<기본속성으로 kafka를 시작>
$ kafka-server-start.sh -daemon /root/kafka/config/server.properties

<9092 확인>

$ telnet localhost 9092

<샘플 주제를 만든다>

$ kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topic1
$ kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topic2
$ kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topic3

<작성된 주제 나열>

$ kafka-topics.sh --zookeeper localhost:2181 --list

#topic 1,2,3뜨면 됨

구성은 이렇게 해봤고, 

 

node-red에서 최초 inject를 잡아주고, 그다음 필요한 각각의 input을 넣어 프로세스를 잡아준다. 최종적으로 kafka_producer로 향하게 노드를 그린다.

 

# 설정은 필요에 따라 다르게 하고, Topic부분에 아까 써줬던 topic1,2,3을 각각 잡아주고

 

broker부분에 연필모양을 눌러서 hosts를 vm으로 잡아준다. (192.168.56.1 : 9092)

 

그리고 전송이 잘 되었는지 확인 하기 위해 debug consol을 활용하여 로그를 확인한다.

 

마지막으로 producer와 같이 consumer를 생성한뒤, 각각의 토픽명들을 적어주고, 브로커를 똑같이 잡아주고, 콘솔도 추가해준다. 

 

마지막으로 deploy를 눌러 시작하고 오른쪽의 debug를 눌러 로그를 확인한다.

 

기호에 따라 inject부분에 interval을 줘서 계속 데이터가 들어오는지 확인한다.

 

끝.

반응형

'설치,명령어등 > 카프카' 카테고리의 다른 글

kafka 테스트/실습  (0) 2022.03.04
kafka 설치/  (0) 2022.03.02

+ Recent posts