파비의 매일매일 공부기록

Two Scoops of Django - #28장 본문

Study/Python

Two Scoops of Django - #28장

fabichoi 2021. 6. 29. 23:30

이번장은 시그널에 대한 내용이다.

최근에 시그널을 처음 써봤는데, 처음에는 디버깅을 어떻게 하는지 몰라 엄청 헤매었었다.

결국 셀러리를 디버그 모드로 켜서 했더니 됐음..ㅠㅠ 아 좀 미리 알려주지

 

여하튼 저자는 시그널은 최후의 수단이라고 한다.

시그널로 도배를 하다 보면 프로젝트가 너무 난해해지고 어떤 시그널이 어떤 역할을 하고 있는지 파악하기가 어려워질 수 있으니 유의하라고 한다.

 

많은 개발자들이 샐러리가 제공하는 비동기 메시지 큐와 시그널을 혼동한다. 시그널은 동기화되고 블로킹을 일으키는 무거운 프로세스를 호출하며 확장과 성능 측면에서 어떤 장점도 없음을 유의하라고 한다.

 

1. 시그널 이용할 때와 피해야 할 때

 - 피해야 할 때 : 시그널이 하나의 특별한 모델에 연관되어 있으며 모델 메서드 중 하나로 이전 가능할 때. save()로 호출 가능한 경우. 커스텀 모델 매니저 메서드를 시그널 대신 이용할 수 있을 때. 특정 뷰에 연관된 시그널이 해당 뷰 안으로 이동될 수 있을 때

 - 사용해야 할 때 : 시그널의 리시버가 하나 이상의 모델을 변경할 때. 여러 개의 앱에서 발생한 한 종류의 시그널을 공통으로 이용되는 리시버로 받아 동일한 방법으로 처리할 때. 모델이 저장된 이후에 캐시를 지우고 싶을 때. 콜백이 필요하나 시그널을 제외하고는 이를 이용할 수 없는 특별한 경우. 

 

2. 시그널을 이용하지 않기 위한 기법

 - 시그널 대신 커스텀 모델 매니저 메서드 이용

 - 시그널을 통하지 않은 모델 검사 : clean(I) 메서드를 오버 라이딩 해볼 것

 - 모델의 save나 delete 메서드를 오버라이딩 하기

 - 시그널 대신 헬퍼 함수 이용하기 : 리펙터링, 아키텍처가 필요한 경우

 

반응형

'Study > Python' 카테고리의 다른 글

Two Scoops of Django - #30장  (0) 2021.07.01
Two Scoops of Django - #29장  (0) 2021.06.30
Two Scoops of Django - #27장  (0) 2021.06.28
Two Scoops of Django - #26장  (0) 2021.06.27
Two Scoops of Django - #25장  (0) 2021.06.26
Comments