Rails帮助从rake文件创建delayed_job [英] Rails help creating a delayed_job from a rake file

查看:156
本文介绍了Rails帮助从rake文件创建delayed_job的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从rake文件创建延迟作业。我应该如何将它移动到控制器中,并创建一个每15分钟运行一次任务的delayed_job。



以下示例演示了我的rake文件:

  namespace:reklamer do 

task:runall => [:iqmedier,:euroads,:mikkelsen] do
#这将在所有这些任务运行完毕后运行
结束

任务:iqmedier => :environment do
需要'Mechanize'
agent = WWW :: Mechanize.new
agent.get(http://www.iqmedier.dk)
end
任务:euroads => :环境做
需要'机械化'
需要'pp'
代理= Mechanize.new {|代理|
结束

任务:mikkelsen => :environment do
需要'Mechanize'
agent = Mechanize.new
agent.get(http://affilate.mikkelsenmedia.dk/partnersystem/mylogins.php)
结束
结束

我应该更改为延迟作业(https:// github .com / collectiveidea / delayed_job)?

建议你看看SimpleWorker,一个基于云的后台处理/工作队列对于Ruby应用程序。它专为卸载任务,运行预定作业以及扩展以同时处理许多并行作业而设计。它很简单,价格合理,可扩展。



(泄露,我为公司工作。)



你创建你的工人(在app / worker中)然后在您的控制器和其他地方将它们排列起来,以便立即运行,或者只需几行代码就可以将它们安排在以后或经常使用的基础上。这里有一个基本的例子。

 
worker = ReportWorker.new
worker.user_id = @ current_user.id
worker。时间表(:start_at => 1.hours.since,:run_every => 900)

#或者立即运行一次
#worker.queue

ReportWorker类将包含用于为当前用户创建报告并发送或发布它所需的逻辑。


How do I create a delayed job from a rake file. How should I move it into a controller and create a delayed_job that runs the task every 15 minutes.

Here is an example how my rake file:

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

What should I change to be a delayed job (https://github.com/collectiveidea/delayed_job)?

解决方案

Suggest you take a look at SimpleWorker, a cloud-based background processing / worker queue for Ruby apps. It's designed for offloading tasks, running scheduled jobs, and scaling out to handle many parallel jobs at once. It's simple, affordable, and scalable.

(Disclosure, I work for the company.)

You create your workers (in app/worker) and then in your controllers and elsewhere queue them up to run right away or schedule them for later or on a recurring basis with just a few lines of code. Here's a basic example.

  worker = ReportWorker.new
  worker.user_id = @current_user.id
  worker.schedule(:start_at => 1.hours.since, :run_every => 900)

  #Or to run once right away
  #worker.queue

The ReportWorker class would contain the logic to create the report for the current user and sent it or post it needed.

这篇关于Rails帮助从rake文件创建delayed_job的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆