ruby-on-rails - 如何在 Rake 任务中在后台运行函数?

标签 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

我想异步抓取链接。我查看了 delay_jobs gem 并看到您可以对对象使用延迟方法,但是当我使用延迟时,我的刮板没有任何输出。

朝着正确的方向一点点插入将不胜感激! :)

最佳答案

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

关于ruby-on-rails - 如何在 Rake 任务中在后台运行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27415201/

相关文章:

ruby-on-rails - 如何使用事件记录批量处理 each_cons

mysql - Mavericks 上的 Rails + MySQL - 库未加载 : libmysqlclient. 18.dylib

ruby - 错误: Rack app won't run -- bundler/setup

Ruby 扩展 Date 类以添加新方法

android - 首选项中的单选按钮选项 - android

android - CSS android 浏览器不允许滚动内容

ruby-on-rails - 未初始化的常量 devise::controllers::internalhelpers

ruby-on-rails - FactoryGirl 和 Rspec

ruby - Thin 与 Ramaze 发生严重碰撞

android - 如何强制 android View 重绘它的背景可绘制?/可能是动画阻止它正常工作