Rails帮助从rake文件创建延迟作业

| 如何从rake文件创建延迟的作业。我应该如何将其移入控制器并创建一个每15分钟运行一次任务的delay_job。 这是我的rake文件的示例:
namespace :reklamer do

    task :runall => [:iqmedier, :euroads, :mikkelsen] do
      # This will run after all those tasks have run
    end

      task :iqmedier => :environment do
              require \'Mechanize\'
              agent = WWW::Mechanize.new
              agent.get(\"http://www.iqmedier.dk\")
      end
      task :euroads => :environment do
            require \'Mechanize\'
            require \'pp\'
            agent = Mechanize.new { |agent|
      end

      task :mikkelsen => :environment do
            require \'Mechanize\'
            agent = Mechanize.new
            agent.get(\"http://affilate.mikkelsenmedia.dk/partnersystem/mylogins.php\")
       end
    end
我应该更改为延迟工作(https://github.com/collectiveidea/delayed_job)?     
已邀请:
建议您看一下SimpleWorker,它是Ruby应用程序的基于云的后台处理/工作队列。它设计用于卸载任务,运行计划的作业以及扩展以一次处理许多并行作业。它简单,经济,可扩展。 (公开,我为公司工作。) 您可以在应用程序/工作人员中创建您的工作人员,然后在控制器中和其他位置将它们排队以立即运行,或者仅用几行代码就可以安排它们以后或循环使用。这是一个基本示例。   工作者= ReportWorker.new   worker.user_id = @ current_user.id   worker.schedule(:start_at => 1.hours.since,:run_every => 900)   #或者立即运行一次   #worker.queue ReportWorker类将包含为当前用户创建报告并发送或发布所需逻辑的逻辑。     
因为DelayedJob是基于一次性工作的,所以单独使用DelayedJob并不能帮助您。您仍然需要定期运行的东西来创建这些工作。 假设: 您在Heroku上,只能获得1小时的cron 您需要每15分钟执行一次工作 你可以做这样的事情... 为您的工作安排课程:
class MechanizeJob < Struct.new(:url)
  def perform
    agent = Mechanize.new
    agent.get(url)
  end
end
从Rakefile安排作业:
task :schedulejobs => :environment do
  urls = [\"http://...\", \"http://...\", \"http://...\"]
  urls.each do |url|
    # 1 is the job priority
    Delayed::Job.enqueue MechanizeJob.new(url), 1, Time.now
    Delayed::Job.enqueue MechanizeJob.new(url), 1, 15.minutes.from_now
    Delayed::Job.enqueue MechanizeJob.new(url), 1, 30.minutes.from_now
    Delayed::Job.enqueue MechanizeJob.new(url), 1, 45.minutes.from_now
  end
end
这将每15分钟针对每个网址运行一次作业。     

要回复问题请先登录注册