2012-03-09 2 views
1

정기적 인 대기열에서 대기열 작업을 수행해야하는 Redis/Resque로 Heroku에서 실행되는 레일즈 애플리케이션 (1.9.2 및 3.2)의 루비가 있습니다. 지금 당장은 로컬 머신에서 'heroku run rake update_listings'를 하루에 한 두 번 실행하고 있습니다 ... 나는 이것을 자동화하고 싶습니다. 나는 언제나 보석을 시도했지만 작업은 백그라운드에서 시작되지 않습니다. Heroku 스케줄러는 적절한 해결책으로 보이지만 scheduler.rb 파일에 혼란 스럽습니다. 나는 실행하면Heroku 스케줄러 Resque

desc "This task is called by the Heroku scheduler add-on" 
task :hourly_feed => :environment do 
    Rake::Task[update_listings].execute 
end 

: 다음 Heroku가 스케줄러 콘솔에서 hourly_feed 작업을하고 Heroku가 로그를 확인 내가 여러 웹 동력계는 hirefireapp에 의해 회전 얻을 보았다,하지만 update_listings는 작업이 호출되지 않았다 긁어 나는 있습니다.

업데이트 : 나는 resque_scheduler를 포기했습니다. 나는이 일을하기에는 너무 초록색이어서 crontab과 sript 파일을 사용하려고 노력하고있다. 여기 내 update.sh 스크립트 파일 : 나는 crontab을-E를 사용하여 크론을 설정

Rake::Task["update_listings"].execute 

와 나는 5 분마다 실행,하지만 나는 메일 로그에 오류가 :

Projects/livebytransit/update.sh: line 1: Rake::Task[update_listings].execute: command not found 

그것은 나타납니다 그것은 내 update.sh 스크립트 파일을 찾고 그것을 읽고 있지만 코드를 실행하지 않습니다. 로그 항목이 따옴표를 삭제 한 것을 보았습니다. 그래서 쉘 스크립트 파일에서 작은 따옴표를 사용하여 변경하지 않았습니다. 나는이에 update.sh 변경 시도 :

heroku run rake update_listings 

오류가 개인적으로, 나는 크론를 사용하여 resque/레디 스 큐에 작업을 추가 할 것이다, resque_scheduler 사용 다시 heroku: command not found

답변

0

Heroku Scheduler가 완벽하게 작동하는 것으로 밝혀졌습니다. "업데이트 된 목록"에 대한 인용문을 잊어 버렸을뿐입니다.

0

왔다.

resque_schedule.yml

count_delayed_jobs_job: 
cron: "0 */1 * * *" 
class: Support::CountDelayedJobsResque 
queue: CDJ 
args: 
description: "count_delayed_jobs_job, every 1hr" 

양자 택일로, 당신은 단지 쉘 스크립트에서 Rake::Task["update_listings"].execute 척하고 작업을 트리거의 crontab을 사용할 수 있습니다.

+0

감사합니다. crontab 솔루션을 시도 할 때 몇 가지 문제로 제 질문을 업데이트했습니다. – tbone

+0

procifle 설정은 어떻게합니까? @TomDunning http://stackoverflow.com/questions/41537142/heroku-procfile-resque-puma-rails-5-resque-scheduler-setup –

+0

@chrishough, 무엇을 할 수 있습니까? 스케줄러를 실행 하시겠습니까? 그것은 resque_scheduler 보석의 일부입니다. – TomDunning

관련 문제