我正在使用beanstalkd来后台处理对facebook graph api的api调用,我希望应用程序更新,即每10分钟点击facebook api获取信息。我想创建一个简单的脚本,从db(fb ids / urls)加载必要的信息,在beanstalkd中排队作业,然后睡9分钟。如果内存消耗过大,也许可以使用God来确保脚本继续运行/重启。
然后我开始阅读drbs,并想知道是否有办法/需要整合两者。
我在#rubyonrails中询问并获得了cron和常规rb脚本作为两个选项。只是想知道是否有更好的方法。
答案 0 :(得分:1)
我建议,为了简化配置,使用delayed_job和一个cronjob调用rake任务来处理作业的排队。
Monit也是上帝的一个很好的替代方案,似乎更稳定,更少的内存可用于过程监控。
对于延迟作业,您需要将以下内容添加到部署脚本中(假设您计划使用capistrano进行部署)
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 gem中提取这些收件人才能让它们运行。