[실전 Django - database 정복기 4부] 트랜잭션과 Celery의 미묘한 관계: "왜 알림이 안 가죠?"
·
ServerDev/DJango
네, 시리즈의 4편입니다. 이번 주제는 실무에서 주니어뿐만 아니라 시니어 개발자들도 종종 겪는, "코드는 완벽한데 실행 타이밍 때문에 발생하는" 매우 까다로운 문제입니다. 로컬에서는 잘 되는데 트래픽이 있는 운영 환경에서만 간헐적으로 발생하는 유령 버그 를 잡아봅시다. 트랜잭션과 Celery의 미묘한 관계: "왜 알림이 안 가죠?"1. 분명히 저장했는데 없대요"회원가입을 했는데 환영 이메일이 안 와요.""로그를 확인해보니 User matching query does not exist 에러가 떠 있습니다."개발자는 억울합니다. 코드를 확인해봅니다. 분명히 User.objects.create()를 호출해서 유저를 만들었고, 그 바로 다음 줄에서 Celery 워커에게 "이 유저한테 이메일 보내"라고 명령..