【问题标题】:Delayed_Job scraper works in development but not on HerokuDelayed_Job scraper 在开发中工作,但在 Heroku 上不工作
【发布时间】:2011-08-20 21:03:42
【问题描述】:

这是爬虫的代码

class Scrape
  def perform
    url = "# a long url"

    agent = Mechanize.new
    agent.get(url)

    while(agent.page.link_with(:text => "Next Page \u00BB")) do
      agent.page.search(".content").each do |item|
        puts "."
        House.create!({
          # attributes...
        })
      end

      agent.page.link_with(:text => "Next Page \u00BB").click
    end
  end
end

在我的本地环境中,我只需键入即可在 Rails 控制台中运行它

Scrape.new.delay.perform # to queue the job
rake jobs:work

而且效果很好。

但是,在 Heroku 控制台中运行类似的(使用工人运行而不是 rake jobs:work)似乎并没有做任何事情。我尝试在 Heroku 日志中记录一些行,我可以获取 url 变量来记录(因此该方法至少被调用)但是“。”每次我们运行while循环时都不会出现,并且不会在数据库中创建房屋。

任何人有什么想法可能是错的吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 heroku delayed-job


    【解决方案1】:

    我自己解决了这个问题,虽然是一个非常模糊的错误。我在本地环境中使用 ruby​​ 1.9.2,但我将应用程序部署在 ruby​​ 1.8.7 堆栈上。

    重要的区别是两个 ruby​​ 版本之间的字符编码发生了变化,这意味着 Mechanize 找不到与 unicode 编码字符“\u00BB”的链接,因此没有进行任何抓取。

    【讨论】:

      猜你喜欢
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      相关资源
      最近更新 更多