[Flask]기본 예제 실행
현재 진행하고 있는 프로젝트의 메인 서버는 node.js로 구축하고 있는 중이다. 이것과 별개로 이미지 처리기능을 가진 python파일이 있는데 이를 node서버와 연결하기가 여간 어려운게 아니였다…
처음엔 django-restframework로 구축하려다 너무 성능에 대한 이슈와 학습의 어려움 때문에 포기했었고, node.js에서 python-shell module을 써보려했지만 dlib 패키지를 불러오는데 오류가 떠서 포기하게 되었다. 그 다음으로 선택한것이 aws의 lambda인데 역시나 패키징을 하는데 있어 이놈의 dlib이 말썽이고, 용량의 제한때문에 삽질만 하다가 끝나게되었다…
결국 이미지 서버를 쉽고 빠르게 구축할 수 있는 방안이 있을까.. 찾다가 flask를 알게되었고 바로 적용하게되었다.
flask
플라스크란 파이썬의 프레임워크입니다. django와 함께 인기 있는 프레임워크지만 두개의 성격이 좀 다릅니다. django의 경우엔 이것 저것 많이 챙겨주기 때문에 개발자가 따로 신경을 쓰지 않아도 되는 장점이 있고, flask의 경우엔 개발자가 입맛대로 만들 수 있는 자유도가 있습니다.
저의 경우엔 이미지 처리만을 위한 서버가 필요했기 때문에 flask를 택했습니다.
Hello World를 출력하는 예제를 만들어보겠습니다.
우선 가상환경을 킨 후에
pip install Flask
mkdir flask_test
cd flask_test
flask_test 폴더에 app.py를 만들어 준 후 다음과 같이 작성해 줍니다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World'
if __name__ == '__main__':
app.run()
하나씩 설명해 보겠습니다.
from flask import Flask
flask에서 Flask라는 class를 import 해주었습니다. 이 클래스는 WSGI(Web Server Gateway Interface) 어플리케이션이 됩니다.
app = Flask(
__name__
)
Flask라는 클래스의 객체를 생성하고 인자로 __name__을 전달합니다.
@app.route(‘/’)
route() 데코레이터를 사용해서 객체의 route를 설정합니다.
app.run()
최종적으로 run()함수를 사용하여 어플리케이션을 로컬서버로 실행합니다.
만약 가상머신이나 외부환경에서 이용할 경우 app.run(host=’0.0.0.0’)으로 변경하면 외부에서 접근 가능해집니다.