0

我正在尝试创建一个 resque 工作人员,将一些网页抓取作为后台工作。Worker 接收到网站主页的 URL,进行一些网页抓取,然后将结果存储在 Redis 中,并在其中保留五分钟。

下面的代码看起来应该完成我上面描述的吗?

class TrialScraper
  @queue = :trial_scraper_queue
  def self.perform(homepage)
    hashed_site_data = 
      {
        :homepage =>
          {
            :url => homepage,
            :title => download_title(homepage),
            :meta_tags => download_robots_tags(homepage) 
          },
        :robots_file => download_robots_file(homepage),
      }
         p hashed_site_data #just to make sure it's working
    REDIS.setex(homepage, 60*5, hashed_site_data.to_json)
  end

现在,这甚至没有出现在 Resque 的 Web 界面中。

知道我做错了什么吗?我认为问题在于将数据发送到 REDIS,但我不确定。

编辑:只是为了澄清,这里有一些更详细的信息。我对上述工作人员的看法是,它在 Resque 的 Web 界面中显示为工作。

我的代码的最终结果应该只是将一些键值对发送到 redis(在 Resque 之外)。但是当我在 redis 客户端并列出所有密钥时,我看不到任何地方列出的密钥。但我应该看到主页与其他键一起列出。

4

1 回答 1

1

我最近编写了一个写入 Resque 队列的项目,然后在处理作业队列时,它会将结果写入同一个 Redis 存储,所以有可能:)

如果您没有在 Resque Web 界面中看到该作业,那么您很可能没有将该作业排入队列?

例如/

ok = Resque.enqueue(TrialScraper, homepage)

希望有帮助吗?

于 2012-08-22T21:49:00.547 回答