Ruby on rails 如何为rake任务创建后台任务?
如何为rake任务创建后台任务。我希望每15分钟运行一次 我的statistik.rake在lib/tasks中Ruby on rails 如何为rake任务创建后台任务?,ruby-on-rails,ruby-on-rails-3,rake,Ruby On Rails,Ruby On Rails 3,Rake,如何为rake任务创建后台任务。我希望每15分钟运行一次 我的statistik.rake在lib/tasks中 desc "Importer statistikker" namespace :reklamer do task :iqmedier => :environment do require 'Mechanize' agent = WWW::Mechanize.new agent.get("http://www.iqm
desc "Importer statistikker"
namespace :reklamer do
task :iqmedier => :environment do
require 'Mechanize'
agent = WWW::Mechanize.new
agent.get("http://www.iqmedier.dk")
form = agent.page.forms.first
form.Username = 'username'
form.Password = 'password'
form.submit
agent.page.link_with(:href => "/Publisher/Stats").click
form = agent.page.forms.first
form.submit
@stats = agent.page.search('//tr')[-2].search('td').map{ |n| n.text }
@existing = Reklamer.where(dato: @stats[0]).first
if @existing.nil?
Reklamer.create!(:virksomhed => 'Iqmedier', :dato => @stats[0], :unik_klik => @stats[1], :klik => @stats[2], :unik_vis => @stats[3], :vis => @stats[4], :leads => @stats[5], :ordre => @stats[6], :cpc => @stats[7], :earn => @stats[8])
elsif @existing.dato != Date.today
Reklamer.create!(:virksomhed => 'Iqmedier', :dato => Date.today, :unik_klik => 0, :klik => 0, :unik_vis => 0, :vis => 0, :leads => 0, :ordre => 0, :cpc => 0, :earn => 0)
else
@existing.update_attributes!(:unik_klik => @stats[1], :klik => @stats[2].to_i, :unik_vis => @stats[3], :vis => @stats[4], :leads => @stats[5], :ordre => @stats[6], :cpc => @stats[7], :earn => @stats[8])
end
end
end
根据您的体系结构,Linux世界中最简单的方法是设置cron作业: 在
/etc/cron.d
中创建一个文件,并将其粘贴到其中:
*/15 * * * * your_app_user cd /your/app/path; rake reklamer:iqmedier RAILS_ENV=production
这将每15分钟运行一次作业(由于
*/15
)。哦。。。很抱歉,不知道Windows 7中的作业。然后,您可以使用Windows计划程序或安装类似于Windows的cron。这些是最简单的解决方案。如何创建延迟作业而不是cron作业。因为我希望它每15分钟运行一次,而不是每1小时运行一次。Heroku每1小时只做一次cron作业