728x90
1. Flask 웹 서버 구축 시작
flask는 Python으로 아주 적은 코드로도 Backend WAS 서버를 생성 할 수 있는 훌륭한 framework입니다.
Backend 서버를 생성하는 다른 framework 를 경험해 보셨을 경우 아시겠지만 기본적으로 지원되는 기능이 아주 많습니다. 그렇기 때문에 잘 이용해서 편리하게 사용이 가능하기 때문에 좋습니다.
다만 이러한 기능이 구현이 되어 있다는 것은 독이 될 수도 있습니다
무슨 이유가 있을까요? Django를 보자면 .....
- 구현되어 있는 틀로 인해 수정해서 사용하고 싶어도 쉽지 않다.
- 나에게는 필요 없는 기능도 꾸역꾸역 다 포함되어 있다.
- 엄청 크게 차이는 발생하지 않겠지만 확실히 flask 보다는 무거운 느낌일 것입니다.
이에 반해 flask는 이러한 장점과 단점이 보입니다
- 매우 가볍다 *실제로 flask framework의 코드 수는 매우 적다고 알려져 있습니다.
- 지원하는 기본 기능도 타 framework에 비해 떨어지지 않는다
- 내가 원하는 기능만 구현해서 내 입맛대로 만들기 편리하다
- 기능을 구현해야 하기 때문에 초보자가 도전하기 어려울 수 있다
- 다만 그렇기 때문에 초보자가 실력을 늘리기에 더 할 나위 없이 좋을 수 있다
저는 이중에 가장 좋은 점이라고 생각하는 부분은 “내 입맛대로 바꾸기 편리하다” 입니다
직접 사용해보니 하나하나 만들어가는 재미가 있어서 더 좋은 것 같습니다.
한 가지 또 플라스크 공식문서에 보면 플라스크를 설명하며 micro라는 말을 사용하고 있습니다
2022년 4월 19일자로 구글 트렌드 python backend framework 3가지 조회 결과
2022년 12월 31일자로 구글 트렌드 python backend framework 3가지 조회 결과
- 미국에서는 flask 점유율이 훨씬 높다는 것을 확인 할 수 있습니다.
- 아시아권에서는 django 다음으로 flask 우세하네요
테스트 환경
- OS : Windows
- IDE : Pycharm Community Version
- Python : 3.10v
위 Pycharm과 Python을 설치 후 진행합니다.
구조는 다음과 같이 짰습니다.
- 폴더명 (프로젝트명) : toy
- flask_example 폴더 생성하여 Pycharm 접속
- 하위에 toy 폴더 생성
- 하위에 __init__.py 파일 생성 합니다
파이썬 가상 환경 접속
.\venv\Scripts\activate
flask 설치
pip install flask
코드 작성
toy.__init__.py
*위 파일명은 toy폴더의 __init__.py란 뜻으로 이해하시면 되겠습니다
from flask import Flask
def create_app():
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'hello world!'
return app
Flask 실행을 위한 환경 설정
windows Powershell 환경 터미널 입력
$env:FLASK_APP="toy:create_app()"
$env:FLASK_ENV="development"
Linux 환경 터미널 입력
export FLASK_APP="toy:create_app()"
export FLASK_ENV="development"
서버 실행
- flask run
접속 테스트
플라스크는 개발용 서버의 기본 포트 번호는 5000번 입니다.
이 포트 번호는 변경 할 수 있는데요
나중에 해보겠습니다
아래 주소로 접속해보면 서버가 잘 작동되었다는 것을 알 수 있습니다.
http://127.0.0.1:5000
완성본 참고용으로는 https://github.com/kschoi93/flask-example 보시면 됩니다.
728x90
'Programming > Backend' 카테고리의 다른 글
3.Flask Database 연결 + Config 설정 (0) | 2022.04.30 |
---|---|
2.Flask MVC 패턴 환경 구축과 Blueprint (0) | 2022.04.22 |
MariaDB + SQLAlchemy + Flask에서 database 연결 끊김 현상 (0) | 2022.03.21 |
Spring Request 데이터를 List 형태로 받으면 @Valid 체크가 안되는 현상 해결 방법 (1) | 2021.12.04 |
협업을 위한 snake_case -> camelCase 변환 방법 @JsonNaming, @JsonProperty (0) | 2021.11.22 |