2016-09-05 4 views
0

조금 혼란 스럽네요. 비동기 적으로 실행하려는 몇 가지 작업, 예를 들어 인벤토리 동기화 통합과 같은 작업이 있습니다. 이를 위해 저는 지연된 직업을 구현했습니다. 그러나 나는 갈퀴 작업을 수행해야한다는 것을 알고 있습니다 : 이것을 위해 Heroku에서 일하십시오. Heroku 스케줄러를 사용하여 10 분마다이 레이크 작업을 실행할 수 있습니다. 내 질문은; 내 인벤토리 동기화 방법을 실행하는 레이크 작업을 만들면 지연된 작업이 여전히 필요합니까? 나의 이해는 heroku 스케쥴러가 '일방적 인 것 (off dynos)'을 시작한다는 것입니다.Heroku 스케줄러를 사용하는 경우에도 지연된 작업이 필요합니까?

지연된 작업을 사용하는 대신 별도의 dyno가 사용되므로 동기화 방법을 직접 시작할 수는 없습니까? 지연 근무의 부가 가치는 무엇입니까?

답변

1

Heroku의 스케줄러는 일반적인 서버에서 cron이 처리 할 수있는 것을 대체합니다. Delayed Job 또는 Sidekiq는 시간이 정해진 일정이 아닌 앱에서 비동기 적으로 작업을 처리하기위한 것입니다.

& 작업자를 백엔드에서 실행하는 이유는 서버가 잠재적으로 불필요하게 긴 실행 프로세스가 완료 될 때까지 기다리지 않고 가능한 빨리 응답을 반환 할 수 있도록하기 위해서입니다. 아웃 바운드 전자 메일, 외부 API 요청 등).

예, 스케줄러는 매시간 또는 하루에 스크립트에서 분석 또는 업데이트를 실행할 수 있지만 지연된 작업은 수행 할 수 없습니다.

+0

그래서 제대로 이해하면 사용자가 인벤토리 동기화를 시작하면 지연된 작업을 사용하고 heroku 스케줄러가 프로세스를 실행하게하는 것이 유용합니다. 사용자가 시작하지 않고 (영웅) 일정에 따라 실행되는 경우 지연된 작업이 필요하지 않습니까? – stoerebink

+1

매일 또는 매시간 특정 시간에 실행해야하는 모든 것이 Heroku Scheduler에 의해 트리거되어야하고 Rails에서는 인벤토리 네임 스페이스가있는 경우 rake 태스크를 사용할 수 있다고 제안합니다 (예 : rake inventory : sync'). 및 동기화라는 작업. 그 레이크 작업에서, 당신은 처리를 할 수 있습니다, 또는 (내가 무엇을 할 것인가) 배경에서 작업자/작업을 트리거합니다. – Noah

관련 문제