[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’)으로 변경하면 외부에서 접근 가능해집니다.