Python/Backend

파이썬 FastAPI / Flask 로컬 서버 포트(127.0.0.1) 띄우기 방법 정리 및 차이 비교

jimmy_AI 2023. 9. 22. 00:52
반응형

Python에서 로컬 서버 포트 주소인 127.0.0.1:port에 해당하는 페이지를

띄우는 방법을 FastAPI와 Flask에서의 방법 차이를 기준으로

간략하게 정리해보도록 하겠습니다.

 

 

FastAPI 서버 포트 띄우기 방법

FastAPI에서 로컬 서버 포트를 열기 위해서는 해당 모듈과 함께 uvicorn 모듈도 필요합니다.

아래 명령어를 통하여 간단히 설치가 가능합니다.

$ pip install fastapi
$ pip install uvicorn

 

다음과 같이 간단한 get 메서드를 지원하는 상황을 가정해보고,

main.py 파일을 간단하게 작성해보도록 하겠습니다.

from fastapi import FastAPI

# FastAPI 객체 선언
app = FastAPI()

# 기본 주소가 호출된 경우 실행
@app.get("/")
def hello():
    return "안녕하세요!"

# hello2 주소가 호출된 경우 실행
@app.get("/hello2")
def hello2():
    return "안녕하세요! 반갑습니다!"

 

이제 아래의 명령어를 통하여 로컬 주소 포트인 127.0.0.1:8000을 열 수 있습니다.

$ uvicorn main:app --reload

 

--host 및 --port 옵션으로 주소나 포트 번호는 변경이 가능합니다.

실행 파일이 main.py가 아닌 경우에는 main:app 부분의 main을

해당 py 파일 이름으로 바꿔주시면 됩니다.

 

명령어 실행 후 아래와 유사한 화면처럼 메시지가 출력되면

성공적으로 서버 포트를 연 것입니다.

 

이제 http://127.0.0.1:8000/ 주소를 브라우저에 입력하면

아랴와 같은 화면이 뜹니다.(주의할 점은 https가 아니라 http가 기본으로 설정됩니다.)

 

마찬가지로, http://127.0.0.1:8000/hello2 주소에도 접속해보도록 하겠습니다.

 

원하는 url에 대한 get 메서드가 성공적으로 작동한 것을 볼 수 있었습니다.

 

반응형

 

Flask 서버 포트 띄우기 방법

이번에는 Flask 모듈에서 유사한 기능을 수행하는 코드를 구현해 보겠습니다.

 

여기서는 flask 모듈만 설치해주시면 기본 준비가 완료됩니다.

$ pip install flask

 

로컬 서버 포트를 열기 위한 main.py 파일 코드는 아래 예시처럼 작성하시면 됩니다.

from flask import Flask

# Flask 객체 선언
app = Flask(__name__)

# 기본 주소가 호출된 경우 실행
@app.route("/")
def hello():
    return "안녕하세요!"

# hello2 주소가 호출된 경우 실행
@app.route("/hello2")
def hello2():
    return "안녕하세요! 반갑습니다!"

if __name__ == '__main__':
    app.run(port=8000) # 기본 포트는 5000이며, 8000 포트로 실행은 다음과 같이 설정

 

FastAPI를 활용한 경우와 app 객체 선언 방법는 어떤 차이가 있는지,

app.get vs app.route 등의 차이는 어떤지 등을 눈여겨 살펴보시면 좋습니다.
또한, Flask 기본 포트는 5000이지만 8000으로 변경은 위와 같이

app.run 내에서 지정해주시면 됩니다.

 

Flask의 경우에는 해당 py 파일을 실행만 해주면 바로 서버 포트 오픈이 됩니다.

$ python main.py

 

실행 시, 출력되는 메시지는 아래처럼 등장합니다.

 

FastAPI에서의 경우와 마찬가지로, http://127.0.0.1:8000/ 및 http://127.0.0.1:8000/hello2
주소에 접속하여 각각의 결과를 확인해 보겠습니다.

(여기서도 기본적으로는 https가 아니라 http입니다.)

 

출력 결과를 비교해보니 FastAPI와는 달리 쌍따옴표(")가

안나왔다는 미묘한 차이가 있었지만, 기본 기능은 잘 수행된 것을 볼 수 있었습니다.