0

バックグラウンド ジョブとして Web スクレイピングを行う resque ワーカーを作成しようとしています。ワーカーは Web サイトのホームページの URL を受け取り、Web スクレイピングを行ってから、結果を Redis に保存します。Redis では、5 分間保持することになっています。

以下のコードは、私が上で説明したことを達成するように見えますか?

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 インターフェイスでジョブとして表示されることです。

私のコードの最終結果は、キーと値のペアが (Resque の外部で) redis に送信されるということだけです。しかし、redis クライアントですべてのキーを一覧表示すると、キーがどこにも一覧表示されません。しかし、他のキーと一緒にホームページがリストされているはずです。

4

1 に答える 1

1

私は最近、Resque キューに書き込むプロジェクトを作成しました。ジョブ キューが処理されると、結果が同じ Redis ストアに書き込まれるため、可能です :)

Resque の Web インターフェイスにジョブが表示されない場合は、ジョブをキューに入れていない可能性が高いですか?

例えば/

ok = Resque.enqueue(TrialScraper, homepage)

それが役立つことを願っていますか?

于 2012-08-22T21:49:00.547 に答える