Python(37)
-
[Python] Python Tool(보안, 코드 품질, 스타일, 테스트)
코드 스타일 및 품질 검사 ToolFlake8기능: PEP 8 코딩 스타일 준수 여부를 검사하고, 일부 코드 품질 문제(예: 사용되지 않는 변수)를 발견합니다.주요 목적: 코드 스타일 및 기본적인 코드 품질 유지.설치 및 사용: https://flake8.pycqa.org/en/latest/Pylint기능: 더 심층적인 코드 분석을 수행하며, 코딩 표준, 코드 품질, 구조적 문제 등을 검사합니다. 또한, 사용자 정의 플러그인으로 확장할 수 있습니다.주요 목적: 코드 품질, 코드 표준 준수, 잠재적인 버그 발견.설치 및 사용: https://pylint.readthedocs.io/en/latest/user_guide/usage/run.htmlBlack기능: 코드 포매터로, 코드 스타일을 자동으로 정리합니다..
2024.09.11 -
pypi 패키지 등록 방법
pypi에 패키지를 업로드 하는 방법을 정리한 글입니다. pypi 가입이 되어 있다는 전제하에 작성되었습니다. 준비물pypi 계정 및 API token 프로젝트 생성1. pypid에 등록할 패키지 명을 최상위 디렉토리로 만든다.2. setup.py 작성pypi 패키지에 대한 정보 기입Development Status 종류1 - Planning: 초기 개발 단계로, 아직 개발이 시작되지 않은 상태.2 - Pre-Alpha: 개발이 시작되었지만, 기능이 거의 없는 상태.3 - Alpha: 주요 기능이 구현되었으나, 테스트가 충분히 이루어지지 않은 상태.4 - Beta: 대부분의 기능이 구현되고, 테스트가 어느 정도 이루어진 상태지만, 여전히 버그가 있을 수 있는 상태.5 - Production/Stable..
2024.08.06 -
[Django] PostgreSQL 파티셔닝(django-postgres-extra)
Django를 사용하면서 PotgreSQL의 테이블을 파티셔닝하는 방법을 정리한 글입니다. Django는 PostgreSQL을 사용할 경우 django-postgres-extra라는 라이브러리를 활용하여 파티셔닝이 가능하다. 특징파티셔닝이 되어있는 모델도 일반 모델과 동일하게 사용이 가능하다.정해둔 key를 기반으로 테이블을 서칭ex) 날짜를 기반으로 파티셔닝 했다면 filter를 date=2020.01.01로 할때 2020년도 파티셔닝 테이블을 조회한다.테스트테스트는 오래전에 진행하여... 기록이 존재하지않음.. 문서https://django-postgres-extra.readthedocs.io/en/master/table_partitioning.html
2024.07.05 -
Python 휴일 찾기 2
이전에 공공데이터 API를 이용해서 휴일 계산했으나 내년도 데이터까지만 제공되고, 이후 데이터는 제공되지 않는 것을 확인했습니다. 정확도로는 공공데이터 API가 정확하겠지만 내년 이후 휴일정보가 필요 시에 holidays 라이브러리를 이용하여 휴일 계산이 가능합니다. 공공데이터 API 활용 글https://hunstory.tistory.com/6 Python_휴일 찾기(공공데이터)사용 라이브러리 import requestsimport timefrom datetime import datetime, timedeltafrom bs4 import BeautifulSoup 공공데이터 OPEN API 사용1. qeury 생성def get_request_query(url, operation, params, serv..
2024.04.26 -
Django vs Flask
Django와 Flask 비교특성DjangoFlask유형Full-featured 웹 애플리케이션 프레임워크Micro 웹 프레임워크목적복잡한 웹 애플리케이션 개발작고 간단한 웹 애플리케이션 또는 마이크로서비스데이터베이스 지원내장 ORM 및 데이터베이스 지원데이터베이스 지원은 확장 모듈로 제공템플릿 엔진내장 템플릿 엔진 (Django 템플릿)Jinja2, Mako, 등 다양한 선택 가능한 템플릿 엔진URL 라우팅내장 URL 패턴 시스템직접 URL 라우팅을 구현해야 함확장성대규모 애플리케이션에 적합작은 프로젝트 및 마이크로서비스에 적합학습 곡선비교적 높음낮음커뮤니티 및 에코시스템큰 커뮤니티와 다양한 패키지 및 플러그인작은 규모의 커뮤니티와 경량 패키지와 플러그인보안 및 인증내장된 보안 기능 및 인증 시스템개발..
2024.04.01 -
마이크로서비스 패턴(1) - 서비스 설명 및 비동기 처리
목차 내용 해당 글은 마이크로 서비스 패턴 이라는 책을 읽으며 정리한 내용입니다. 1. 서비스 지향 아키텍처 서비스 지향 아키텍처(SOA)란? 위키피디아: SOA는 마이크로 서비스보다 먼저 알려진 개념이다. 애플리케이션을 네트워크로 액세스 할 수 있는 기능 단위로 분리해서 각각 독립적인 작동과 업데이트가 가능하게 하는 것이다. 하나의 프로세스 안에서 실행되지만 않는다면 어떠한 형태라도 SOA가 될 수 있다. 마이크로 서비스는 “서로 통신 할 수 있는 독립적인 컴포넌트로 애플리케이션을 개발한다” 라는 SOA 목표의 일부분을 충족하면서 등장했기 때문에 SOA를 좀더 구체화 한 것으로 설명된다. 2. 모놀리식 애플리케이션 개발 1. 장단점 모놀리식으로 프로젝트를 시작하는 것은 쉽다. 아마 최고의 접근 방법이라..
2024.04.01 -
[Django] CPU 사용량 증가 원인 파악(FilterSet model)
목차 이슈 상황 FilterSet의 Meta에 model을 추가하게 되면 해당 모델의 FK(Foreign Key)가 fields에 포함되면 CPU사용량이 급격하게 증가하는 상황이 발생 CPU가 높은 AWS EC2를 사용하게되면 문제가 되지 않지만 docker로 동작하게되면 cpu가 적어 timeout이 발생하거나 속도가 매우 느려짐 FilterSet 검증 1. 문제의 FilterSet class StudnetFilterSet(FilterSet): class Meta: model = Student fields = [ 'id', 'status', 'name', 'parent', # FK ] CPU 사용정도 38478ms = 38.478s 2. Meta의 model 제거 시 class StudnetFilte..
2024.02.16 -
[Django] 스로틀링(Throttling) - 요청 속도 제어
목차스로틀링(Throttling) 이란? 클라이언트가 API에 보낼 수 있는 요청 속도를 제어 할 수 있게 해준다. Request가 안정적인 상태의 요청 속도 및 버스트 한도를 초과할 경우, 요청을 실패시키고 "429 Too Many Requests" 오류 응답을 클라이언트에 반환한다. Throttling이 필요한 이유는 시스템에 과부화를 막거나, 악의적으로 과도한 요청을 보내는 공격에 대해서 프로세서를 보호하고 해당 시스템에 과열 문제가 있음을 사용자에게 알리기 위함이다. Django Throttling 특징여러 개의 Throttle을 설정해두고, API별로 나누어 설정이 가능하다.공식 문서에서는 DoS(Denial-of-Service)공격의 방어책으로 사용하지말라고 경고하고 있다.DoS 공격을 방지하..
2024.01.12