【问题标题】:How to create a background task for rake task?如何为 rake 任务创建后台任务?
【发布时间】:2011-03-07 11:42:06
【问题描述】:

如何为 rake 任务创建后台任务。我希望它每 15 分钟运行一次。

我在 lib/tasks 中的 statistik.rake

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rake


    【解决方案1】:

    根据您的架构,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.microsoft.com/en-US/windows7/schedule-a-task或者安装一个类似windows的cron。这些是最简单的解决方案。
    • 如何创建延迟作业而不是 cron 作业。因为我希望它每 15 分钟而不是每 1 小时运行一次。 Heroku 仅每 1 小时执行一次 cron 作业
    猜你喜欢
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多