[FastAPI] Uvicorn / Gunicorn
·
Back
Uvicorn / Gunicorn1. UvicornFastAPI의 비동기 기능을 지원하는 ASGI 서버로서 실제 요청/응답을 처리.ASGI ↔ WSGI단독 실행 시 단일 프로세스만 사용 → 병목 발생 가능.2. Gunicorn여러 개의 워커 프로세스를 띄워 병렬 요청 처리를 가능하게 함.CPU 코어 수에 따라 워커를 나눠서 트래픽을 분산시켜 성능 향상.`gunicorn` + `uvicorn.workers.UvicornWorker` 조합gunicorn app.main:app -k uvicorn.workers.UvicornWorker --workers 4 --bind 0.0.0.0:8000gunicorn이 여러 워커 프로세스를 실행각 워커는 uvicorn을 내부적으로 실행비동기 처리(uvicorn) + 병렬..
[Poertry] poetry shell 명령어가 먹히지 않아..
·
Back
Issue❯ poetry shellThe command "shell" does not exist.다른 명령어는 잘 먹히는데 왜 "shell" 명령어만 먹히지 않는 거지?SolutionPoetry 공식문서 Commands | Documentation | Poetry - Python dependency management and packaging made easyWhen using --local-version, the identifier must be PEP 440 compliant. This is useful for adding build numbers, platform specificities, etc. for private packages. --local-version is deprecated and ..
[Django] 장고 ORM 쿼리 N+1 해결하기
·
Back/django
쿼리 N+1 문제쿼리 한번으로 N건의 데이터를 가져왔을때, 원하는 데이터를 얻기위해 N건의 데이터를 가져온 데이터 수만큼 반복해서 2차적으로 쿼리를 수행하는 성능 이슈해결 방법 : Eager-loadinglazy-loading를 피해야 한다.lazy-loading 이란 django에서 ORM을 작성할때, queryset에 담겨있는 데이터를 이용할 때에 SQL문을 호출하는 것django는 이러한 성능 문제를 해결할 수 있도록 Lazy-loading방식을 피하고 Eager-loading방식으로 바꾸는 두가지 방법을 제공함. select_related() 와 prefetch_related()다. 두 메서드 모두 ORM(객체 관계 매핑)을 사용할 때 성능 최적화를 위해 사용되는 method이다. 두 method..
[Django] 일대일관계로 User 모델 확장하기
·
Back/django
일대일관계로 User 모델 확장하기로그인, 권한 부여 등과 상관이 없는 사용자 정보 필드를 저장할 때 사용.# models.pyfrom django.db import modelsfrom django.contrib.auth.models import Userfrom django.db.models.signals import post_savefrom django.dispatch import receiverclass Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True) introduction = models.TextField(default="안녕하세요", blank=True, ..
[Django] models.py 정리
·
Back/django
Models장고에서 'models'는 DB와의 상호 작용을 정의하는 데 사용함.DB 테이블 구조를 정의, 해당 테이블과 상호 작용할 수 있는 파이썬 클래스각 모델은 단일 DB 테이블에 매핑클래스를 통해 DB의 테이블을 생성하고 쿼리를 실행하여 데이터를 검색, 추가, 업데이트 및 삭제 가능Models Doc DjangoThe web framework for perfectionists with deadlines.docs.djangoproject.com예시from django.db import modelsclass Musician(models.Model): first_name = models.CharField(max_length=50) last_name = models.CharField(max_le..
[Django] Django 프로젝트 시작하기 위한 기본 명령어
·
Back/django
Django 설치pip install djangopython도 설치Django 프로젝트 만들기django-admin startproject 프로젝트명프로젝트 생성python manage.py makemigrations # 1번python manage.py migrate # 2번1. makemigrations모델의 변경 사항을 추적하여 데이터베이스 마이그레이션 파일을 생성모델 클래스를 수정하거나 새로운 모델을 추가한 경우, 이 변경 사항을 데이터베이스에 적용할 수 있도록 마이그레이션 파일을 생성db.sqlite3 파일 생성2. migratemakemigrations에서 생성된 마이그레이션 파일을 기반으로 데이터베이스 스키마를 변경데이터베이스에 적용되지 않은 마이그레이션들이 실행되어 실제 데이터베이스의 스키..
[Node.js] Socket.IO - 양방향 통신
·
Back/node.js
Socket.IO란 ?웹 어플리케이션에서 양방향 실시간 통신을 구현하기 위한 JS 라이브러리. WebSocket 프로토콜을 기반으로 하며, 웹 소켓이 지원되지 않는 환경에서는 Polling 등 다양한 방법을 사용하여 실시간 통신을 지원함.주요 특징실시간 양방향 통신 : 웹 소켓을 사용하여 서버와 클라이언트 간에 양방향 통신을 구현.폴링 및 기타 전송 방법 지원 : 웹 소켓을 사용할 수 없는 환경에서도 폴링, 롱 폴링 등 다양한 전송 방법을 활용하여 실시간 통신을 지원.Room 및 Namespace : 여러 개의 룸이나 네임스페이스를 생성하여 클라이언트를 그룹화하거나 특정 이벤트를 특정 그룹에게만 전송다양한 이벤트 : 서버 및 클라이언트 간에 사용자 정의 이벤트를 정의하고 처리할 수 있음. 특정 상황이나 ..
RESTful API
·
Back
REST(Representational State Transfer) 정의 자원(resource) 의 표현에 의한 요청정보 전달 JSON 또는 XML 데이터로 응답 Web의 기존 기술과 HTTP 프로토콜을 활용하는 통신 방식 개념 HTTP URI를 통해 자원(resource) 을 명시하고, HTTP Methode(POST, GET, PUT, DELETE) 를 통해 해당 자원에 대한 CRUD 기능을 적용하는 것을 의미함. API(Application Programming Interface) 란? 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것 REST API 정의 REST 기반으로 서비스 API를 구현한 것 OpenAPI(누구나 사용할 수 있도록 ..
[Node.js] ejs 문법
·
Back/node.js
include 문법, 특수한 문법들 사용include는 ejs 파일 분할 시 사용 기능 유사html 태그처럼 넣어 주는 게 아니라 문자로 바뀜,JSON.stringify(글목록) html 사이에 자바스크립트 넣을 때 사용
REST API
·
Back
REST API Representational State Transfer 를 잘 따르는 API = 좋은 API 디자인하는 원칙 6개 Uniform Interface (일관성) 일관성있는 URL : /movie -> /movie/1 ~ /movie/10 ~ ... 하나의 URL + method는 하나의 데이터를 보내야 함. Client - Server 구분 유저에게 서버역할 맡기지 않기. Stateless 요청끼리 서로 의존성이 있으면 안됨, 각각 독립적으로 처리. Cacheability 요청은 캐싱이 가능해야함 => 자주 수신되는 자료들은 요청 날리지 않고 하드에 저장해놓고 사용. Layered system 요청 하나는 최종 응답 전까지 여러 단계를 거쳐도 됨. Code on demand 서버는 유저에게..