如何从Resque工作者向Redis发送数据?

时间:2012-08-22 21:18:48

标签: ruby-on-rails redis resque

我正在尝试创建一个resque worker,它将一些webscraping作为后台工作。工作人员收到网站主页的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的网络界面。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

如果您在Resque网络界面中没有看到该作业,那么您很可能不会将该作业入队?

e.g /

ok = Resque.enqueue(TrialScraper, homepage)

希望有帮助吗?