Flask RESTful API - 서버 환경 설정

2019. 7. 1. 23:34Python/Flask

반응형

서버 환경 설정

앞으로 개발할 환경에 대한 서버 설정을 시작 해보자
개발환경은 Window10 버전 기준으로 한다.


set_env.bat - 신규


파일위치: C:\istarbucks_api\code\set_env.bat

아래와 같은 설정 정보를 서버가 구동 전에 실행하여서 변수에 설정 한다. 설정된 정보는 뒤에  작성 할 app.py 에서 사용한다. 

  • 어플리케이션 이름
  • 서버 실행 모드(개발,운영)
  • DB 연동 정보
set FLASK_APP=istarbucks
set FLASK_ENV=development
set DATABASE_URL=postgresql://postgres:admin!@34@localhost:5432/postgres


config.py - 신규


파일위치: C:\istarbucks_api\code\config.py

개발, 운영 환경에 대한 환경 설정 파일

import os

class Development(object):
    """
    Development environment configuration
    """
    DEBUG = True
    TESTING = False
    SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URL')

class Production(object):
    """
    Production environment configurations
    """
    DEBUG = False
    TESTING = False
    SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URL')

app_config = {
    'development': Development,
    'production': Production,
}

config.py 는 서버구동시 파라미터 개발,운영에 따라서 호출되는 클래스가 달라지게 된다.
자세한 호출 방법은 app.py 에서 확인하자.

db_init.py - 신규

파일위치: C:\istarbucks_api\code\db_init.py

DB 초기화

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy() 


app.py - 수정


import os

from flask import Flask
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy

from config import app_config

#set_env.bat 에서 설정한 application 이름 설정
app = Flask(os.getenv('FLASK_APP'))

#set_env.bat 에서 설정한 FLASK_ENV는 development
env_name = os.getenv('FLASK_ENV')
"""
app_config 는 config.py 에서 정의 app_config 이면 위에서 development를 설정하였기
때문에 config.py 의 Development 클래스의 정보가 설정 되게 된다.
"""
app.config.from_object(app_config[env_name])

# 데이터 변경사항에 대해 커밋 전후로 알림 여부
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

"""
기본설정확인을 위한 URL
"""
@app.route("/")
def hello():
    return "Hello Flask!"

"""
API Resource 등록
---------------------------------------------------------
POST /stores/create - 매장 등록
PATCH /stores - 벌크 매장 등록
GET /stores - 매장목록 조회
GET /stores/{int:store_id} - 매장정보조회
DELETE /stores/{int:store_id} - 매장정보삭제
"""
api = Api(app)

if __name__ == "__main__":
    """
    DB 초기화
    """
    from db_init import db
    db.init_app(app)
    app.run(debug=True,port=5000)


서버 실행 순서

  1. 가상환경 시작
  2. set_env.bat 실행
  3. python app.py 실행
  4. 브라우저에서 http://localhost:5000 실행 후 어플리케이션 실행 확인

[서버실행 화면 및 어플리케이션 실행]



참고사이트


환경설정정보등록:  http://flask.pocoo.org/docs/dev/tutorial/factory/

환경설정:  http://flask.pocoo.org/docs/1.0/config/

반응형