일지

2023.06.08

scarlet0star 2023. 6. 8. 21:55

https://scarlet0star.tistory.com/46

 

django : Signal

시그널이란 것을 접하게 된 것은 참 우연찮은 기회인데, 구글 소셜 로그인을 사용하려고 시도했을 당시에 소셜 계정이 생성되는 것은 확인했으나 관련된 모델 인스턴스가 생성되지 않아 어떻게

scarlet0star.tistory.com

예전에 시그널을 썼던 경험이 있다. 특정 이벤트에 반응해서 원하는 동작을 하게끔 해주는 django 기능 중 하나다. 이번에는 알람 기능의 구현을 위해서 이 기능과 함께 MQ를 사용할 것이다.

 

지난 일지에서는 메세지큐의 안정적인 성능이라는 점에서 rabbitMQ을 사용하기로 마음먹었는데, 단순 알람 같은 단편적이고 상대적으로 중요하지 않은 메세지는 가벼운 redis를 통해서도 상관없을거라 판단하여 redis를 사용하기로 마음 먹었다.기획에서 채팅이 추가된다면... redis 만으로도 충분하지 않을 수도 있다.

 

signal을 통해 post_save... 즉 이번 프로젝트에서는 Comment 모델이 생성되기 직전에 django Channel을 통해 메세지 큐를 생성하여 웹소켓에 보내고, channels.py 에서 구현된 consumer에 정의된 대로 웹소캣을 통해서 사용자는 자신의 Post에 타인의 새로운 댓글이 생성되었음을 확인할 수 있다. 자세한 구현은 더욱 찾아봐야겠지만, 일단은 계획을 사전에 정리하여 남겨둔다.