플라스크 기초 및 웹서버 개발의 개념 이해(2019.3)

2022. 2. 27. 16:06BackEnd/Flask (출처:시니어 개발) - 클론코딩

 #Install flask module

pip install flask -> path에 자동으로 잡혀서 어디에서 해도 무관함

 python install flask

 

#Setup Flask Project

mkdir webapp

 

 flaskapp - context에 해당

static - 정적인 파일들 (연산이 없는 것들)

templates - html이 존재하는 영역

__init__.py - Web application을 생성하는 것 (파이썬 수업에서는 생성자 수업에서 나왔다 한다.) ,web application을 구동하는 것, 즉 모든 정보를 메모리에 올리는 것을 기술함(핵심,메인파일에 해당함)

 

#touch start_helloflask.py 로 작성간능

start_flask.py

 

 


실행 시키는 역활

메모리에 띄우는 역

start_helloflask.py에 작성한다. 

 

실행(root에서 실행)

python start_helloflask.py

***학습 중이므로 WARING은 일단 무시하고 실행 *** (우측 실행 결과)

실행이 빨리 뜬다. java는 3,5초 정도 걸리는데 이유는 Python은 100% interpreter언어이기 때문이다.

1.Serving Flask app - 어떤 app이 실행 되었나.

 

2.lazy loading - 메모리에 모든것을 끌어앉고 올리지 않겠다.(lazy란 용어자체가 컴퓨터 공학 용어로 천천히 끌어 올리겠다는 의미이다.)

 

3.Environment는 기본적으로 2가지가 있다. devlep(개발중)과 production(실제 서비스), default가 production에 해당해서 현재 production으로 뜬다.

 

4.WSGI - WebServer Gateway Interface

 게이트웨이 - 어떤 포트를 붙들고 있는거.

 서버 - 여기선 flask 서버에 해당

 인터페이스 - 대면하고 있는거.(포트를 계속 보고 있음)

 


Global Object : g

from flask import g

g는 전역변수 

실시간 접속자 수, 총 방문자 수, 채팅 시 서버 컨트롤 등등... 사용.

아래 코드를 보면 사용 법 알 수 있음.

 

 


Response Objects

 

전달되는 데이터 : 'Custom Response'

상태 : 200

전달되는 데이터2: json

 

 

header 값 확인 결과 json 데이터로 보내 준 값이 존재 했다. 즉 (1,2,3)의 3번 부분은 header에 해당한다. (header는 편지봉투의 뒤편 주소,이름,전화번호가 담긴 것과 같은 것으로 생각하면 된다.)

 

 

 

 

 

 

 

 

 

 

 

 


Response Objects (Con't) : WSGI

실행할

 

 


Requset Event Handler

 

before_first_request - 맨 처음 요청 보낼 때

before_request - 매 번 요청시마다 이 요청이 따라 옴(web Filter 처리로 자주 썻음)

after_request - 

teardown_request - 다 띄우고 나서 실행

teardown_appcontext - application context가 destory 될 때.


 Routing

 

redirecr : a.html을 쳤는데 에서 b.html로 가는거.

 


Routing (Con't d) : subdomain

 


Request Parameter

 


Request Parameter Custom Function Type

from datetime import datetime,date -> 추가

웹의 개념 상 한번만 메모리에 띄우기 위해서 이렇게 사용한다고 한다. (공부가 좀더 필요한 부분)


Request.environ

 

요청에 대한 환경변수 값의 셋팅 


Request 

 


 Response Object


Cookie

쿠키도 class에 해당함, 메모리에 떠 있는 것이 아님, 클라이언트에게 내려주고, 클라이언트한테서 받는 것임.


 Session

 

서버 메모리에 떠 있는 싱글톤 객체. 내가 준 쿠키의 사용자가 맞는지 확인 하기 위해서 필요한 것.

Permanent_session_ligetime => 어느 정도 시간이 지나면 Session이 자동으로 날라 갈 것인지.


Redis

 

디비에만 존재하는 메모리 디스크(메모리디비),네트워킹이 가능. 여러 개발 공간의 정보를 한군데에 저장하는 식으로도 많이 사용한다. 


Session(Cont'd) 


------   후기   -----

 

 

그런데... pip 버전 에러가 떠러 sudo python -m pip install --upgrade pip로 pip를 버전 업그레이드 했다.. 

좀더 찾아 보고 할 것 그랬다. 다른 곳에서 보니까 이렇게 하는 것을 추천한다... 

 

******

WARNING: You are using pip version 21.2.3; however, version 22.0.3 is available.

You should consider upgrading via the '/Users/jin.come.up/study/python/flask/venv/bin/python3 -m pip install --upgrade pip' command.

*******

 

Users/jin.come.up(lcoal)/study/python/flask/venv/bin/로 가면 python3라는 파일이있다. python3 -m pip install --upgrade pip를 bash에 복붙하면 되었다.

 

  • pip 으로 패키지 설치할 때, sudo는 위험하니 절대 쓰지 맙시다.
  • 대신 가상환경 패키지 매니저를 설치하고 가상환경을 활용합시다.
  • pip 개발자도, 특권이 필요한 경로를 디폴트 경로로 설정한 것에 대해후회한다고 합니다