본문 바로가기
Flask

Flask - flask의 시작과 웹서버 실행

by DGK 2021. 11. 21.

 

Flask 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

flask의 시작과 웹서버 실행(Python)

flask를 시작하는 기본 코드를 익히고, 사용 방법을 연습하고자 한다.

 

flask를 시작하는 기본코드

from flask import Flask

app = Flask(__name__)
@app.route("/hello")
def test():                           
    return "<h1>Hello Flask!</h1>"

if __name__ == "__main__":              
    app.run(host="127.0.0.1", port="8080")

 

```

결과 :

```

 

flask 라이브러리를 사용하여, 자신의 PC에서 웹 서비스를 구현하는 코드이다.

 

 

기본코드 분석하기

  • flask 모듈 임포트(import)
from flask import Flask

 

해당 코드는 flask 라이브러리의 Flask 클래스를 import 하겠다는 의미이다.

단, flask 라이브러리가 설치되지 않으면 해당 코드는 실행되지 않으며 flask 라이브러리는 pip install flask로 설치할 수 있다.

 

참고로, 주피터 노트북에서는 !pip install falsk로 flask 라이브러리를 설치해야 한다.

 

 

  • Flask 객체를 app에 할당
app = Flask(__name__)

print(app)

 

```

결과 :

<Flask '__main__'>

 

```

 

Flask(__name__)으로 이름을 설정하여, 현재 위치를 flask 객체에 알려줘야 한다.

이름을 변경해도 정상 실행되지만, 일부 확장 기능 사용시에는 해당 이름을 정확히 알려주지 않으면 정상 작동되지 않는다.

 

즉, 다수의 웹 서비스를 개발하는 경우에는 가장 기본이 되는 웹 서비스에 __main__이라는 이름을 부여해야 한다.

이후 app이라는 객체안에 웹 서비스 기능을 넣어 원하는 (웹)서비스를 구현할 수 있다.

 

 

  • 라우팅 경로 설정
@app.route("/hello")
def test():                           
    return "<h1>Hello World!</h1>"

 

라우팅(route)이란 적절한 목적지를 찾아주는 기능으로, 해당 URL에 맞는 기능과 연결시켜준다.

예를 들면, http://127.0.0.1:8080/hello의 URL에서 '/hello' 부분이 라우팅이다.

 

라우팅 경로는 @객체이름.route('/route 경로이름')의 코드로 설정하며, /route 경로이름 밑에 선언된 함수를 호출할 수 있다.

 

 

  • 메인 모듈로 실행될 때, flask 웹 서버 구동
host_addr = "0.0.0.0"
port_num = "8080"

if __name__ == "__main__":              
    app.run(host=host_addr, port=port_num)

 

자신의 PC에서 웹 서비스를 구현하는 코드이다.

app.run() 함수를 통해 서버를 구동할 수 있으며, run() 함수의 인자로 host, port, debug를 넣어준다.

  - host : 웹 주소

  - port : 포트

  - debug : True or False

 

ex. run(host = '127.0.0.1', port = '8080', debug = True)

 

자체 PC에서 웹 서비스 구현할 경우에는 host를 127.0.0.1 또는 0.0.0.0으로 설정하면 된다.

 

 

참고내용

기본적으로 웹 서버(Web Server)는 요청에 따른 정적인 HTML 페이지를 반환한다.

반면, 웹 서버가 동적으로 데이터를 반환하도록 하기 위해서는 WAS 프레임워크가 필요하며 주요 WAS 프레임워크로는  flask, django, rails, node.js 등이 있다.

 

참고로, 상용화를 위해서는 별도의 전문 웹 서버를 사용해야 하지만 flask는 기본 웹 서버를 간단한 명령으로 제공한다. 

 

 

댓글