2011-03-23 5 views
0

beanstalkd를 사용하여 api에서 Facebook API 그래프를 백그라운드 프로세스로 호출하고 앱을 업데이트해야합니다. 즉, 10 분마다 facebook api를 방문하십시오. db (fb ids/urls)에서 필요한 정보를로드하고 beanstalkd의 작업을 대기시킨 다음 9 분 동안 잠자기하는 간단한 스크립트를 작성하는 방법에 대해 생각했습니다. 아마도 메모리 사용량이 너무 많아지면 스크립트를 계속 실행하고 다시 시작하도록 God을 사용하십시오.외부 apis에 맞는 앱 확장하기

그런 다음 drbs에 대해 읽기 시작했고 두 가지를 통합 할 방법/필요성이 있는지 궁금해했습니다.

#rubyonrails에서 물어 보았고 cron과 regular rb 스크립트가 두 가지 옵션으로 제공됩니다. 더 좋은 방법이 있는지 궁금합니다.

답변

1

delayed_job을 사용하여 구성을 간단하게하고 작업 대기열을 처리하는 레이크 작업을 호출하는 cronjob을 사용하는 것이 좋습니다.

Monit도 하나님을 대신 할 수있는 좋은 대안이며 프로세스 모니터링을 위해 더 안정적이고 배가 고픈 것 같습니다. 지연 작업에 대한

당신이 당신의 배포 스크립트에 다음을 추가 할 필요가

namespace :delayed_job do 
    def rails_env 
    fetch(:rails_env, false) ? "RAILS_ENV=#{fetch(:rails_env)}" : '' 
    end 

    desc "Stop the delayed_job process" 
    task :stop, :roles => :app do 
    run "cd #{current_path};#{rails_env} script/delayed_job stop" 
    end 

    desc "Start the delayed_job process" 
    task :start, :roles => :app do 
    run "cd #{current_path};#{rails_env} script/delayed_job start" 
    end 

    desc "Restart the delayed_job process" 
    task :restart, :roles => :app do 
    run "cd #{current_path};#{rails_env} script/delayed_job stop" 
    run "cd #{current_path};#{rails_env} script/delayed_job start" 
    end 
end 

내가 그들을 실행 얻기 위해 delayed_job 보석에서 이러한 레서피를 추출했다 (당신이 카피 스트라 노에 배포 할 계획 가정).

+0

글쎄, 백그라운드 큐잉을 위해 beanstalkd를 사용하고 있습니다. delayed_job은 Rails에 의존적인데, x 초마다 db를 폴링한다는 것은 말할 필요도 없다. cron을 사용하여 irc에서 논의 된 바와 같이, 나는 새로운 아이디어를 찾고있었습니다. –