python
-
부하테스트 - Locust (설치 및 스크립트 작성)파이썬 2022. 5. 15. 22:14
들어가며 파이썬으로 작성된 Locust라는 툴을 설치해서 사용하는 방법을 알아보고 웹 애플리케이션에 부하 테스트를 적용해본다. 참고 사항: locust는 영어로 메뚜기라는 뜻인데, 이 툴에서 부하를 주는 것을 swarming(무리 짓기)이라고 표현한다. 왜 Locust? 우선 다른 부하 테스트 툴도 많지만 왜 이 Locust를 사용하면 어떤 이점이 있냐면, Jmeter, nGrinder,SOAP UI 등의 도구는 사용과 스케일링을 하는데 어려움이 있는 반면에, locust는 설치와 사용이 편리하고, 파이썬 스크립트로 작성을 하기 때문에 훨씬 빠르고 간편하게 부하 테스트를 해볼 수 있다. 설치 설치는 아주 간단하다. pip install locust # poetry를 사용한다면 poetry add locu..
-
Poetry 의존성 Syntax (~, ^ 에 대해)파이썬 2022. 4. 20. 17:13
Poetry로 의존성 관리하다보면 pyproject.toml에 ~나 ^가 버전앞에 적혀있는 것을 볼 수 있다. 이러한 Syntax에 대해 정리해보았다. Caret Requirements Django = "^3.2.4" 0이 아닌 가장 왼쪽의 버전 섹션 까지만 유지한다. 3.2.4 ≤ Django < 4.0.0 사이의 버전을 유지하면서 Poetry가 의존성 관리를 해준다. Django = “^0.3.1” 이라면 0.3.1 ≤ Django < 0.4.0 사이의 버전을 유지한다. Tilde Requirements Django = "~4.0.4" 가장 왼쪽 섹션 기준으로 버전을 유지한다. major, minor, patch 섹션이 존재한다면 Django = "~4.0.4” → 4.0.4 ≤ Django < 4...
-
[Django] DRF Router(라우터) 동작 원리파이썬/Django 2022. 2. 13. 22:42
들어가며 DRF의 대표 클래스(ViewSet, Serializer, Router)중 하나인 Router의 종류와 동작원리를 알아본다. Router는 간단하고 빠르게 자동으로 url 라우팅을 할 수 있도록 해준다. from rest_framework import routers from apps.account. import views router = routers.SimpleRouter() router.register(r'users', views.UserViewSet) urlpatterns = router.urls 위와 같은 코드를 작성하면 ^users/$ ^users/{int: lookup}/$ 의 url패턴이 자동으로 생성된다. DRF에는 SimpleRouter, DefaultRouter 두 가지를 제공..
-
[Django] DRF Serializer(시리얼라이저) 동작 원리파이썬/Django 2022. 1. 24. 22:44
들어가며 DRF에서 주요 클래스(ViewSet, Router, Serializer) 중 하나인 Serializer의 동작 원리를 살펴본다. Serializer의 기능은 세 가지가 있는데 다음과 같다. 모델 객체 → 파이썬 네이티브 타입인 dict 타입 객체로 직렬화 dict 타입의 데이터를 validation dict 타입 → 모델 객체로 역 직렬화 validation 기능은 주로 역 직렬화 전에 dict 타입의 데이터를 검증해주는 기능으로 사용된다. 이 Seirlaizer의 세 기능을 각각 어떻게 동작하는지 알아본다. 1. Model → dict class UserSerializer(serializers.Serializer): username = serializers.CharField() passwor..
-
pydantic이란? (DRF Serializer를 대체할 수 있을까?)파이썬/Django 2021. 12. 14. 22:45
들어가며 pydantic은 타입 애너테이션을 사용해서 데이터를 검증하고 설정들을 관리하는 라이브러리이다. pydantic은 런타임 환경에서 타입을 강제하고 타입이 유효하지 않을 때 에러를 발생시켜준다. FastAPI, Project Jupyter, Microsoft, AWS 등 많은 곳에서 사용된다. pydantic의 기본과 간단한 사용법을 알아보고 DRF Serializer과 바교해보자 한눈에 보기 from datetime import datetime from typing import List, Optional from pydantic import BaseModel class User(BaseModel): id: int name = '홍길동' date_joined: Optional[datetime] =..
-
Docker + Django에 Gitlab-CI(Pytest) 붙이기파이썬/Django 2021. 10. 24. 13:05
Gitlab CI를 구성하기 위해서는 크게 GitLab runners 설정하기 장고 패키지 설치하기 프로젝트 최상위 디렉토리에 .gitlab-ci.yml 작성하기 로 이루어져 있습니다. 우선 GirLab runners에 대해 알아보겠습니다. GitLab Runners란? 빌드, 테스트, 배포 같은 일련의 작업들을 실행하는 애플리케이션 파이프라인에서 GitLab CI/CD와 함께 수행되는 애플리케이션 각 Runner는 사용 가능한 상태(작업이 없는)가 되면 GitLab 인스턴스에 계속해서 요청을 보내 작업들을 할당 받음 이 Runner는 세 가지로 구분되어 있습니다. 간단히 각 Runners의 정의를 살펴보면 Specific runners 하나의 프로젝트에 사용되는 러너 Shared runners GitL..
-
[Django] Django의 동작 원리와 과정 파헤치기파이썬/Django 2021. 10. 20. 09:38
Django 동작과정 WSGI Application 생성 settings에서 정의한 settings.MIDDLEWARE 로드 WSGI(uwsgi, gunicorn)에서 applcation call WSGI environ(request data를 담은 딕셔너리)과 함께 WSGIRequest 인스턴스 생성 미들웨어 체인에 WSGIRequest 인스턴스와 함께 call 미들웨어를 모두 거쳐간 후 최종적으로 view에 request가 전달되어 개발자가 정의한 로직을 거친 후 최종적으로 Response 반환 상세 보기 우리가 만든 장고 프로젝트 wsgi.py의 application 변수에는 callable한 WSGIHandler의 인스턴스가 반환된다. 이때 settings에 정의한 미들웨어를 로드한다. WSGi가..
-
Gunicorn 동작 과정 알아보기파이썬/Django 2021. 10. 10. 14:15
파이썬 웹 애플리케이션과 웹 서버 사이에 위치하는 Gunicorn 이라는 WSGI가 어떻게 동작하는지 알아본다. WSGI? Web Server Gateway Interface의 약자로 파이썬의 WAS이다. 어떻게 Gunicorn이 내 장고 애플리케이션을 동작시키는지? WSGI서버와 이 WSGI로 동작하기 위한 애플리케이션 사이에 지켜지는 hook들이 있는데 이 hook을 가지고 wsgi서버가 애플리케이션을 실행시킴 import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_defaults.settings") application = get_wsgi_appli..