나는 Heroku를 사용하고 싶지만 무작위로 24 시간마다 dynos를 다시 시작한다는 사실 때문에 상황이 다소 어려워집니다.Heroku에서 장기 실행 작업을 어떻게 처리합니까?
저는 지불 처리를 다루는 일련의 직무를 매우 중요하게 생각하며 데이터베이스를 통해 100 % 신뢰할 수 있도록 지원하고 싶습니다. 이런 이유로 나는 느린 DJ를 선택했다.
나는 DJ를 선택했기 때문에 한 번에 데이터베이스에 5,000,000 개의 이벤트를 보낼 수 없다는 것을 의미합니다 (전자 메일을 보낼 때마다 1 개).
그 때문에, 나는 더 오래 실행되는 작업 (몇 시간에 걸쳐 200,000 개의 텍스트 메시지 보내기)이 있습니다.
중간에 실행이 길어지면 중간에 오른쪽으로 잘리는 것이 효과적입니다.
heroku가 SIGTERM
을 전송 한 다음 30 초 이내에 프로세스가 종료 될 것으로 예상됩니다. 이것은 나의 더 긴 일을 위해 일어나지 않을 것입니다.
이제 처리 방법을 잘 모르겠습니다 ... 내가 생각할 수있는 유일한 방법은 예를 들어 텍스트 (예 : sms_sent_at
열)를 보낸 후 데이터베이스를 업데이트하는 것입니다. 모든 배치에 대해 단일 업데이트 쿼리를 보내는 대신 데이터베이스 성능을 파괴합니다.
재시작을 예약 할 수 있다면 훨씬 더 좋을 것입니다. 적어도 밤에는 30 초 이상 걸리지 않는 작업을 99 % 실행하지 않을 가능성이 있습니다. 하위.
다른 방법으로, 장시간 실행중인 DJ 내에서 SIGTERM
을 듣고 적어도 일찍 루프를 중단하여 나중에 다시 시작할 수 있습니까?