제 본업에서는 Django 앱과 큐잉을 위한 Celery를 사용하고 있으며, 백엔드로 Redis를 사용 중입니다. 배포할 때마다 작업들이 “펑!” 하고 사라져 버립니다. 그리고 우리는 클라이언트의 장시간 실행되는 작업 사이에 업데이트/배포를 끼워 넣어야 합니다.
저는 이를 모두 DB 기반 큐로 교체하고 있으며, 정식 상태 머신(formal state machine)을 사용하고 있습니다. Celery는 "작업을 즉시 실행"하는 단계에만 사용하고 있습니다. 이렇게 하면 영속적 상태(persistent state)를 확보할 수 있고, Celery를 큐로 사용하지 않고 작업을 직접 실행할 수 있는 용량을 가지게 되며, 상태가 Redis에서 일시적(transient)으로 존재하지 않게 됩니다.
Cameron, 감사합니다. 이제 로깅이 다시 활성화되었으니 이 문제에 집중하겠습니다. 지금까지는 눈에 띄는 부분이 없습니다. 오류나 실패한 백그라운드 작업을 볼 수 없고, 코드 로직을 살펴봐도 의도적으로 이메일 전송을 건너뛰는 부분이 보이지 않습니다. 해당 주제에 대해 누구에게도 OP에 대한 이메일이 발송되지 않은 점이 흥미롭습니다. 마치 작업이 애초에 큐에 추가조차 되지 않은 것처럼 보입니다. 계속 확인해서 알려드리겠습니다.