Python

이 글은 Python 웹 프레임워크의 내부 동작을 이해하고자 Flask의 일부 기능을 간략하게 설명합니다. 세부적인 구현은 포함되어 있지 않습니다. https://ooknimm.tistory.com/6 글에서 이어집니다. 프로덕션 환경에서는 uwsgi, gunicorn과 같은 WSGI로 HTTP 서버가 실행되고, 이 서버가 웹 애플리케이션을 호출합니다. WSGI 툴은 동시성, 안정성 등 기능들을 제공하기 때문에 필수적으로 사용됩니다. 반면 개발 환경에서는 단독으로 HTTP 서버를 실행하여 pdb 및 IDE를 통해 디버깅할 수 있어야 합니다. app = Flask(__name__) app.run(port=9000) 위와 같이 app을 직접 실행하면 http서버가 listen 되어 9000 포트로 요청하면 ..
· Python
https://ooknimm.tistory.com/7 글에서 이어집니다. 전체 코드는 ooknimm/flask-parameter-validator에서 확인할 수 있습니다. 추가해야 하는 기능은 다음과 같습니다. parameter type annotation으로 pydantic model 외에도 python typing 지원 form data 지원 path, query, header를 지원 multiple request parameter를 지원 1편에서는 기초적인 기능만 존재하여 코드가 심플했습니다. 이제 보다 복잡한 요구사항을 수행할 수 있어야 하므로 ParameterValidator와 Dependant만 존재하는 클래스 구조에서 확장하였습니다. 클래스 관계를 직관적으로 확인하기 위해 UML을 그려보겠습..
· Python
Flask에는 validation 기능이 내장되어 있지 않으므로 별도의 라이브러리를 사용해야 합니다. flask-request-validator, flask-parameter-validation, flask-inputs, flask-pydantic 등의 오픈소스 라이브러리들이 이미 존재하는데, 이 중에 flask-pydantic이 fastapi의 validation과 비슷한 콘셉트로 가장 만족도가 높은 라이브러리가 될 것 같습니다. 어쨌든 이러한 기능을 직접 만들어 보고 싶었는데, 요 몇 년간 python web framework 중 가장 핫한 fastapi에는 request parameter를 아주 우아하게 validation 하는 기능이 있으니 이를 흉내 내어 만들기로 하였습니다. 전체 코드는 ook..
이 글은 Python 웹 프레임워크의 내부 동작을 이해하고자 Flask의 일부 기능을 간략하게 설명합니다. 세부적인 구현은 포함되어 있지 않습니다 https://ooknimm.tistory.com/2 글에서 이어집니다. thread local Django와 달리 Flask는 현재 요청 정보가 담겨있는 request 객체를 함수의 인수로 전달하지 않고 import 하여 사용합니다. from flask import Flask, request app = Flask(__name__) @app.route("/") def home(): print(request) return "hello world" import만 하면 어느 모듈에서든 접근이 가능합니다. 요청이 발생하면 Flask 내부에서 request 객체를 만들..
이 글은 Python 웹 프레임워크의 내부 동작을 이해하고자 Flask의 일부 기능을 간략하게 설명합니다. 세부적인 구현은 포함되어 있지 않습니다. 서버단에서 웹 어플리케이션을 개발한다면 대부분의 경우 웹 프레임워크를 사용합니다. 웹 어플리케이션 개발에 필요한 여러 작업들을 처리해주어 개발자는 자신이 구현하고자 하는 비즈니스 로직에 집중할 수 있기 때문입니다. 웹 프레임워크가 수행하는 기능을 살펴보고 간단히 구현해보겠습니다. 우선 웹 프레임워크를 이해하기 위해선 알아둬야할 개념들이 있습니다. 정적 컨텐츠, 동적 컨텐츠, 웹 서버, CGI, WAS, WSGI입니다. 기본 개념 정적 컨텐츠 html, css, 이미지등과 같이 서버에 미리 준비되어 있는 파일 형태의 컨텐츠를 의미합니다. 동적 컨텐츠 사용자/상..
ooknimm
'Python' 카테고리의 글 목록