Flask_1

정원석·2024년 3월 24일
0

MLOps

목록 보기
13/14
post-thumbnail

1. Flask 란?

The python micro framework for building web applications

  • Micro Service Architecture(MSA) 를 위한 web app framework
    • web ap framework (web framework) : 웹 서비스 개발을 위한 프레임워크
  • Django 등 다른 framework 에 비해 굉장히 가벼우며, 확장성, 유연성이 뛰어난 프레임워크
    • 단, 자체 지원 기능은 적다는게 장점이자 단점
  • 사용하기 쉽고, 간단한 기능을 가볍게 구현하기에 적합하기 때문에 ML Model의 첫 배포 Step 으로 Flask를 자주 사용합니다.

2. Flask 설치

  • Python 가상환경

    • 3.6 이상
    • pip3
  • How to Install

    # 새로운 디렉토리를 하나 생성한뒤, 이동해주세요
    mkdir flask-tutorial
    cd flask-tutorial
    
    # python 버전 확인
    python -V
    
    # Flask 설치
    pip install -U Flask
    
    # Flask Version 확인
    flask --version
    # Python 3.10.12
    # Flask 3.0.2
    # Werkzeug 3.0.1

    flask version

3. Hello World! with Flask

  • Flask 를 사용해 컴퓨터에 간단한 Web Server를 띄워보자.

  • app.py 파일을 생성해서 다음 코드를 작성하자.

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello_world():
    	return "<p>Hello World!</p>"
       
    if __name__ == "__main__":
    	app.run(debug=True, host="0.0.0.0", port=5000)
    # debug 모드로 실행, 모든 IP에서 접근 허용, 5000포트로 사용하는 것을 의미
  • 동일한 폴더에서 pyhon app.py 을 수행하여 application server를 로컬에 띄운다.

  • 127.0.0.1:5000 으로 접속하면, Hello World! 라는 문자가 브라우저에 보인다.
    flask server

  • 5000번 포트는 mlflow에서 사용하고 있어서 5001번으로 수정함.

4. Routing

  • flask 의 route() 데코레이터는 python 함수를 web server 의 URI 에 mapping 시킬 수 있습니다.
    • 이를 활용하여 여러분이 원하는대로 Routing을 수행할 수 있습니다.
  • 간단한 예시
  • app.py 파일을 아래로 수정
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
  return "<p>Hello World!</p>"
  
@app.route("/decorator")
def hello_decorator():
  return "<p>This page is decorator page</p>"
  
if __name__ == "__main__":
  app.run(debug=True, host="0.0.0.0", port=5000)
  • 동일한 폴더에서 python app.py 을 수행하여 application server 를 로컬에 띄운다.
  • 127.0.0.1.:5000으로 접속하면 Hello World! 라는 문자가 뜨고,
    127.0.0.1.:5000/decorator로 접속하면 This page is decorator page 라는 문자가 브라우저에 보이는 것을 확인할 수 있다.
    decorator

5. POST method

  • flask의 route() 데코레이터는 URI 뿐만 아니라 HTTP Method도 지정할 수 있다.
    • 이를 활용하여 원하는대로 API를 만들 수 있다.
  • 아래는 간단한 예시
  • app.py를 아래로 수정.
from flask import Flask
import json

app = Flask(__name__)

@app.route("/predict", method=["POST", "PUT"])
def inference():
  return json.dump({'hello': 'world'}), 200
  # http status code 를 200으로 반환하는 것을 의미.
  
if __name__ == "__main__":
  app.run(debug=True, host="0.0.0.0", port=5000)
  • curl을 수행하여 HTTP 응답을 확인한다.
  • POST
    POST
  • PUT
    PUT
  • method에 POST, PUT만 넣었기 때문에 POST,PUT에 대한 응답만 정상적으로 받습니다.
profile
이기적이타주의자

0개의 댓글