Frame Work (45) 썸네일형 리스트형 [FastAPI] DI는 bootstrapping을 생각해보기 HTML 삽입 미리보기할 수 없는 소스 이 글의 DI는 의존성 주입(Dependecny injection)을 의미한다. 개요 FastAPI는 Django와 Flask랑 확연이 차이가 있다는 지점을 느낀 부분이 DI이다. FastAPI의 DI를 사용할 수도 있으며 dependency-injector라는 라이브러리를 이용해서 DI를 사용할 수도 있다. 이 글은 FastAPI의 dependency-injector라는 라이브러리를 적용하기 위해 고민했던 흔적을 남긴다. 1. 부트스트래핑과 DI dependency-injector를 적용하기 위해 먼저 고민했던 것은 DI의 시작점을 어떻게 가져갈 것인지에 대한 부분이었다. django에서는 settings.py라는 것을 통해 간접적으로 드러나는데 FastAPI로 .. [FastAPI] 실행은 Factory Pattern을 적용하자. 개요최근에 FastAPI를 통해 이것저것 시도해보고 있는 중이다. 무언가를 새롭게 배우고 있는 중이라 확실히 알아가는 재미를 느끼고 있다. 문제는 개발하려는 개념을 쪼개서 Project 구조에 녹이려다 보니 FastAPI Document에서 제시하는 내용을 가지고는 부족함을 느끼고 있다. 그래서인지 항상 Google에 이것저것 검색하게 되면서 "삽질"의 시간이 늘어난다.. 이번 글은 FastAPI를 실행시키기 위한 진입점인 main.py 혹은 경우에 따라서는 app.py 로도 사용하는 파일에 대해 고찰한 내용이다. FastAPI를 실행시키기 위한 진입점FastAPI Document는 FastAPI를 구동시키기 위해 main.py라는 파일에 다음과 같은 코드를 사용하라고 가이드해 준다.from typ.. [FastAPI] Pydantic GenericModel을 이용한 Response Data 문서화 HTML 삽입 미리보기할 수 없는 소스 개요 최근 들어 FastAPI를 다뤄볼 일이 생겼다. 그동안 Django나 Flask를 다루면서 겪었던 문제인 API 문서 생성 방법은 추가적인 라이브러리를 사용하거나 직접 문서를 작성하는 방식이었다. 이는 결국 라이브러리를 익히고 어떻게 사용해야 할지를 또 고민해야 한다는 점에서 러닝 커브가 발생했다. 그러나 FastAPI에는 API 문서를 자동 생성해 주는 기능이 포함되었기에 편리함을 몸소 체감 중이다. 조금 더 알아보다가 type hint를 잘 사용한다면 조금 입맛대로 표현해볼 수 있지 않을까 싶은 생각이 들었다. FastAPI에서 API 문서를 생성할 때는 pydantic의 BaseModel과 많이 연계된 듯 보이는데 그렇다면 pydantic에 Generic.. Django와 MySQL 연결 문제 Exception 탐구 개요django는 python에서 Web Application Server를 만들기 위해 사용되는 프레임 워크입니다. Web Application Server를 만들 때는 자연스레 데이터 베이스의 니즈가 생기게 되고 DataBase와의 연결 설정을 필요로 하게 됩니다. 그런데 django 관점에서는 DataBase는 외부에 존재하는 대상이기 때문에 연결을 요청하고 데이터를 송수신하는 과정에서 다양한 문제가 발생할 수 있으며 이 문제들을 잘 제어하여 Exception을 처리하게 됩니다.이번엔 마주한 문제는 django에서 ‘MySQL Server has gone away’라는 Exception입니다. django에서 daemon을 만들어 띄워서 동작시키던 도중 일어났던 Exception이었습니다. 이 Ex.. [Django] show_urls 흉내내기 개요 django_extensions은 django 개발시 사용할 수 있는 편리한 추가 기능을 제공하는 Third Party 라이브러리입니다. 이 라이브러리는 django 프로젝트의 개발 및 디버깅을 보다 쉽게 만들어줍니다. 여러 가지 기능들이 있겠지만 그중에서도 저는 django에 정의된 view를 확인하는 데 많이 사용하고 있으며 문서를 작성할 때 프로젝트에 정의된 총 view의 수를 측정할 때 사용하곤 합니다. (view의 총개수를 본다는 건 얼마나 많은 API가 정의되어 있는지를 의미합니다) 그런데 정의된 view만 확인하는 것 외에 이것을 이용하여 추가로 필요한 정보들을 측정하려면 제공되는 기능만 이용해서는 부족하다고 했습니다. 적절히 활용하기 위해 django-extensions는 어떻게 vi.. Django project를 src layout으로 구성하기 개요: src layout? django 모범 사례에서는 django app의 생성 기준을 하나의 개념 집합 단위로 생성해야 된다고 명시하고 있습니다. 하지만 저는 이렇게 app을 구성하게 될 경우 네이밍을 통해서는 어떤 것이 djjango app에 해당하는 디렉터리인지 구분이 안 가는 상황을 종종 겪곤 합니다. 그러하여 최근엔 django app을 구성할 때 단일 app을 만들고 그 안에 적절한 개념을 생성해서 구분하는 편입니다. 여기서 "단일 app"이라는 말 그대로 django app을 하나만 생성하는 것을 뜻합니다. 이렇게 단일 app을 통한 구성 방식으로 작성하던 도중 뭔가 더 발전시킬 수 있는 방법이 있지 않을까 싶어 프로젝트 구성에 관한 자료를 찾아보던 중 src layout이라는 방법이 있.. [Django] auth_group 다루기 Group?Django의 migrate를 실행하게 되면 Django 설정에 의해 auth_group, xxx_groups, auth_group_permissions라는 테이블이 생성되는 것을 알 수 있는데 이번 포스팅은 이 세 테이블에 데이터를 추가하려면 어떻게 해야 되는지 정리한 글이다. auth_group위 테이블은 Django User Model에 생성된 데이터 즉, 사용자를 그룹으로 묶어주는 역할을 하는 테이블이다. 기본적으로 정의된 필드는 다음과 같다.Field|Type |Null|Key|Default|Extra |-----+------------+----+---+-------+--------------+id |int(11) |NO |PRI| |.. uWSGI Socket + Nginx + Docker 1. 개요 Django Project 배포 시 구성 방법 중 하나는 Nginx를 Reverse Proxy로 두고 중간에 WSGI로 Nginx와 Django Project 간 연결하는 방법이다. 이 때 WSGI를 지원하는 소프트웨어 중 uWSGI를 사용하게 될 경우 socket을 이용하여 상호 통신할 수 있도록 구성하는 방법이 존재하는데 이번 포스팅은 이런 환경을 Docker를 이용해 구성할 수 있도록 시도했던 내용들이다. 본 포스팅에 사용된 대략적인 Django Project Tree의 일부분이다. . ├── Dockerfile ├── config │ ├── __init__.py │ ├── asgi.py │ ├── exception.py │ ├── settings │ ├── type_defined.py .. 이전 1 2 3 4 5 6 다음