如何在Rake任务中在后台运行函数?

时间:2014-12-11 04:06:54

标签: ruby-on-rails ruby background web-crawler mechanize

我在rake任务中抓取网站。我的基本格式是:

namespace :crawler do

  desc "TODO"
  task crawl :environment do
    Crawler.crawl!
  end

class Crawler
  require 'rubygems'
  require 'mechanize'
  def self.scrape_page!
  end

  def self.start_scrape!(link)
    # get html. prepare to scrape
  end

  def self.crawl!
    # crawl links and scrape pages
    self.delay.start_scrape(link)
  end
end
end

我想异步地抓取链接。我查看了delayed_jobs gem并看到你可以在对象上使用延迟方法,但是当我使用延迟时,我的刮刀没有输出。

非常感谢向正确的方向推进! :)

1 个答案:

答案 0 :(得分:3)

您可以在那里创建新的线程和调用方法 http://www.ruby-doc.org/core-2.1.5/Thread.html