python
3 posts
파이선에서 asyncio로 비동기 처리하기

비동기 프로그래밍과 동작원리 비동기(asynchronous) 처리는 현재 실행 중인 작업이 완료되지 않은 상태에서 다른 작업을 처리하도록 요청할 수 있는 방식이다. 동기(synchronous) 처리와 다르게 여러 작업을 동시에 실행할 수 있다는 장점이 있다. 파이선에서는 비동기 프로그래밍을 적용하여 동시성을 보장하기 위해 라는 모듈을 사용한다. Coroutine(코루틴) 특정 함수를 실행할 때, 반복되는 작업을 개별 함수로 분리하고 이를 호출하여 사용할 수 있다. 여기서 호출되어 수행되는 흐름을 이라고 한다. 은 하나의 entry point를 가지고 있으며 호출되는 에 종속적이라는 특징을 가지고 있다. 이란 서브 루틴처럼 특정 함수의 실행에 종속되어 있는 것이 아닌, 대등한 관계를 가지고 서로 순차적으로 호출할 수 있도록 구현된 함수라고 할 수 있다. 과 달리 여러 개의 entry point와 exit point를 가진다. 을 이해하기 위해 아래 개념들을 알 필요가 있다. Iter…

May 14, 2023
|
python
@abstractmethod를 통한 SOLID 원칙 적용하기

개요 db에는 여러 종류의 table이 존재하며, 서비스의 business layer에서는 필요에 따라 각 table에 접근하여 query를 수행해야 할 것이다. ORM같은 프레임워크 툴을 사용하지 않고 raw query를 전부 선언하여 사용하는 경우, 이 query들을 어떻게 작성하는게 좋을까? 전부 하나의 class에 method로서 선언하기? create, update등 용도에 따라 분리하기? , , layer를 각각 추상화하여 코드를 작성하며 내가 그리고자 했던 파이선 아키텍쳐가 어떤 모습이었는지 기록해보려 한다. SOLID 원칙: 객체지향설계 5원칙 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍 및 설계에 대한 5원칙이다. 코드의 가독성과 확장성을 위한 가장 기본적인 원칙이라고 볼 수 있다 Type Name Description SRP 단일 책임 원칙 (Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다 OC…

February 27, 2022
|
python
파이선의 isinstance 활용하기

Django에서 APIException에 대한 응답 데이터를 재구성하기 에서 api response를 커스터마이징하기 위하여 jsend 포맷을 적용한 renderer를 작성하고 있었다. jsend format 400번대 에러코드를 반환하는 client error들에 대한 format을 작성하려 하는데.. 아래 예시처럼 400을 반환하는 와 나머지 400번대 에러들이 반환하는 data의 type이 달랐다. ValidationError PermissionDenied 처음엔 반환되는 객체의 변수인 (에 정의된 값)를 뽑아와서 400번대 에러를 두 종류로 나누었는데, 특정 에러에 대해서만 이렇게 문자열로 처리를 한다는 것이 영 마음에 들지 않았다. Django에서는 예외처리를 위한 data를 어떻게 구현했을까? Django에서는 함수를 호출하여 에 대한 데이터를 구성하고 있다. 이 함수는 파이선의 built-in method인 를 사용해 data를 구성한다. 이를 활용하여, data …

December 29, 2021
|
python