2013-07-04 4 views
4

나는 heroku를 배치 한 Rails 3 앱을 가지고 있습니다.Sidekiq로 백그라운드 작업 예약

class TaskWorker 
    include Sidekiq::Worker 
    def perform 
    ... 
    end 
end 

어떻게 12시 1분 a.m 매일 TaskWorker.perform_async의 실행을 예약하기 : 나는 app/workers/task_worker.rb에서 Sidekiq 노동자가?

+0

이 비디오를 본 적 : 도움이 될 수 있습니다. 아마 이러한 질문도 도움이 될 수 있습니다 : http://stackoverflow.com/questions/15188465/how-to-get-sidekiq-working-on-heroku http://stackoverflow.com/questions/16687083/rails-heroku-sidekiq- confirm-procfile-is-working/16692308 # 16692308 – bodrovis

+0

@bodrovis, 고맙지 만 대답을 얻지 못했습니다. 24 시간마다 특정 시간에이 작업을 실행하고 싶습니다. – Annie

답변

-3

나는 명백한 진술을하고 있지만, 그날 밤마다 사이드킥 직업을 불러오는 크론 작업을하는 것이 무엇이 잘못된 것입니까?

+0

heroku에서 어떻게 구성 할 수 있습니까? 당신의 대답을 자세히 설명해 주시겠습니까? – Annie

+0

Ruby 일정 Cron 보석을보십시오. 작업을 구성하고 배포 할 수 있습니다. –

+0

1. 시스템 관리자를 참여시켜야합니다. 2. 서비스를 공개하고 로컬 호스트에서만 호출되도록 보안해야합니다. – laffuste

5

sidetiq도 있습니다. https://github.com/tobiassvn/sidetiq 보석은 ice_cube gem을 통해 복잡한 타이밍 표현식을 지원합니다.

저는 개인적으로 sidekiq과 같이 가볍게 통합 할 수있는 보석을 가지고 있다는 것을 알게되었습니다. 그런

뭔가 작업을해야합니다 :

class TaskWorker 
    include Sidekiq::Worker 
    include Sidetiq::Schedulable 

    recurrence do 
    daily.hour_of_day(0).minute_of_hour(1) 
    end 

    def perform 
    # do magic 
    end 
end 

주의 깊은 생각이 보석을 사용할 때 약간의 시간 표현 몇 가지 성능 관련 문제가 있기 때문이다. https://github.com/tobiassvn/sidetiq/wiki/Known-Issues. 내가 당신에게 준 표현은이 문제를 우회해야합니다.

2

Sidetiq가 Sidekiq에 추가 한 오버 헤드가 마음에 들지 않아 다른 해결책을 찾아 냈습니다.

분명히 Heroku는 거의 알려지지 않았지만 무료로 scheduler addon을 사용하여 10 분, 1 시간 또는 매일마다 누적 작업을 실행할 수 있습니다. 이것은 cron 작업에 대한 Heroku의 대답이며 무료 추가 기능이라는 것이 좋습니다. 중요하지 않은 대부분의 스케줄링에서 작동해야합니다.

Heroku는 자신의 문서에서 스케줄러가 예정된 이벤트를 간혹 (드물게) 놓칠 수있는 "Best Effort"서비스라고 기술하고 있습니다. 이 작업이 실행되는 중요 인 경우 custom clock process을 사용하는 것이 좋습니다. 사용자 정의 시계 프로세스는보다 안정적이지만 dyno 시간에 포함됩니다. (그리고 다른 프로세스와 마찬가지로 요금이 부과됩니다.)

현재 Heroku에서 권장하는 시계 과정은 clockwork입니다.