Ruby on rails 扩展能够访问外部API的应用程序
我正在使用beanstalkd后台处理对facebook graph api的api调用,我希望该应用程序能够更新,即每10分钟点击一次facebook api以获取信息。我考虑创建一个简单的脚本,从db(FBID/URL)加载必要的信息,在beanstalkd中对作业进行排队,然后休眠9分钟。如果内存消耗过大,可以使用God来确保脚本继续运行/重新启动 然后我开始阅读关于DRB的文章,想知道是否有一种方法/需要将两者结合起来Ruby on rails 扩展能够访问外部API的应用程序,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在使用beanstalkd后台处理对facebook graph api的api调用,我希望该应用程序能够更新,即每10分钟点击一次facebook api以获取信息。我考虑创建一个简单的脚本,从db(FBID/URL)加载必要的信息,在beanstalkd中对作业进行排队,然后休眠9分钟。如果内存消耗过大,可以使用God来确保脚本继续运行/重新启动 然后我开始阅读关于DRB的文章,想知道是否有一种方法/需要将两者结合起来 我在rubyonrails中询问,得到了cron和正则rb脚本作为两
我在rubyonrails中询问,得到了cron和正则rb脚本作为两个选项。只是想知道是否有更好的方法。为了配置的简单性,我推荐使用cronjob,它调用一个rake任务来处理作业排队 也是上帝的一个很好的替代品,对于进程监控来说,它似乎更稳定,内存消耗更少 对于延迟的作业,您需要将以下内容添加到部署脚本中(假设您计划使用capistrano进行部署)
我必须从延迟的工作gem中提取这些recipes来运行它们。我使用beanstalkd作为后台队列。延迟的_作业依赖于Rails,更不用说它每x秒轮询一次db。正如问题中提到的,在irc中讨论了使用cron,我正在寻找一些新的想法。
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