- Flask 란
The python micro framework for building web applications
Micro Service Architecture (MSA) 를 위한 web app framework web app framework (web framework) : 웹 서비스 쉽게 개발을 해주는 프레임워크
Django 등 다른 framework 에 비해 장점은 굉장히 가벼우며, 확장성, 유연성이 뛰어난 프레임워크 단, 자체 지원 기능은 적다는게 장점이자 단점
사용하기 쉽고, 간단한 기능을 가볍게 구현하기에 적합하기 때문에 대부분의 ML Model 의 첫 배포 Step 으로 POC단계에서 Flask 를 자주 사용합니다.
2.Flask 설치
Prerequisite
Python 가상환경 3.6 이상
pip3
How to Install
# 새로운 디렉토리를 하나 생성한 뒤, 이동해주세요
mkdir flask-tutorial
cd flask-tutorial
# python 버전 확인
python -V
# Flask 설치
pip install -U Flask==2.0.2
# Flask Version 확인
flask --version
# Python 3.8.9
# Flask 2.0.2
# Werkzeug 2.0.2
3.Hello World! with Flask
Flask 를 사용해 여러분의 컴퓨터에 간단한 Web Server 를 띄워보겠습니다.
app.py 파일을 생성하여 다음 코드를 복사 후 붙여넣습니다.
from flask import Flask
app = Flask(__name__)
@app.route("/") #플라스크 서버 주소에 / route url로 요청이 가게되면 hello_world 함수 실행
def hello_world():
return "<p>Hello, World!</p>"
#hello_world 함수는 Hello, World! 반환
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=5000)
# debug 모드로 실행, 모든 IP 에서 접근 허용, 5000 포트로 사용하는 것을 의미
동일한 폴더에서 python app.py 을 수행하여 application server 를 로컬에 띄웁니다. 127.0.0.1:5000 으로 접속하면, Hello, World! 라는 문자가 브라우저에 보이는 것을 확인할 수 있습니다.
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("/fastcampus") #/fastcampus 가 오면 hello_fastcampus() 함수를 실행시킨다.
def hello_fastcampus():
return "<p>Hello, Fast Campus!</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/fastcampus 로 접속 하면 Hello, Fast Campus! 라는 문자가 브라우저에 보이는 것을 확인할 수 있습니다.
5.POST method
flask 의 route() 데코레이터는 URI 뿐만 아니라 HTTP Method 도 지정할 수 있습니다. 이를 활용하여 여러분이 원하는대로 API 를 만들 수 있습니다. 간단한 예를 들면 다음과 같습니다. app.py 를 다음과 같이 수정합니다.
from flask import Flask
import json
app = Flask(**name**)
@app.route("/predict", methods=["POST", "PUT"]) #/predict 주소로는 POST , PUT 메소드만 허용을 하겠다. 반환되는 값으로는 'hello': 'world'를 반환하고
#이런 식으로 지정을 할 수 있어서 이를 활용하면은 여러분들이 원하는대로 API를 설계할 수 있다.
def inference():
return json.dumps({'hello': 'world'}), 200 # http status code 를 200 으로 반환하는 것을 의미합니다.내가 지정할 수 있다.
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=5000)
동일한 폴더에서 python app.py 을 수행하여 application server 를 로컬에 띄웁니다.
curl 을 수행하여 HTTP 응답을 확인합니다.
curl -X POST http://127.0.0.1:5000/predict
# {"hello": "world"}
curl -X PUT http://127.0.0.1:5000/predict
# {"hello": "world"}
curl -X GET http://127.0.0.1:5000/predict
# <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
# <title>405 Method Not Allowed</title>
# <h1>Method Not Allowed</h1>
# <p>The method is not allowed for the requested URL.</p>
POST, PUT 만 허용하였으므로 POST, PUT 에 대한 응답은 정상적으로 오지만, GET 에 대한
응답은 405 ERROR 가 반환됩니다.
이외에도 Flask 는 Web Application 을 구동하기 위한 다양한 기능들을 내장하고 있습니다.
#직장인인강 #직장인자기계발 #패스트캠퍼스후기#온라인패키지:머신러닝서비스구축을위한실전MLOps#머신러닝서비스구축을위한실전MLOps온라인패키지Online.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'MLops' 카테고리의 다른 글
패스트캠퍼스 챌린지 24일차 (0) | 2022.02.16 |
---|---|
패스트캠퍼스 챌린지 23일차 (0) | 2022.02.15 |
패스트캠퍼스 챌린지 21일차 (0) | 2022.02.13 |
패스트캠퍼스 챌린지 20일차 (0) | 2022.02.12 |
패스트캠퍼스 챌린지 19일차 (0) | 2022.02.11 |