3

Sinatra を使用して構築した Web ベースのアプリがあります。最近から、定期的にデータを収集してデータベースに保存する必要がありました。このためにResque、 とClockwork宝石を組み合わせて使用​​できると言われました。

約 1 時間ごとに、データベースに基づいて約 15 回の計算を行い、結果をデータベースに保存する必要があります。

これが私が取ったアプローチです。メソッドを持つ 15 個のクラスを作成することにしましたperform(テストに使用した正確なファイルは以下にあります)。次に、Resque.enqueue( GraphData )15 クラスすべてに対して と同様のことを行います。

class GraphData

  @queue = :graph_data

  def self.init()

  end

  def self.perform()
    File.open( '/home/ziyan/Desktop/resque.txt', 'a' ) { | file | file.write( "Resqueu - performed - #{Time.now}\n" ) }
  end

end

テスト目的で操作をトリガーするために、rake タスクを作成しました。

desc "Start Resque Workers for Queue" # {{{
task :graph_data do |t|

  ENV["QUEUE"]      = "*"
  ENV["VVERBOSE"]   = "1"
  ENV["INTERVAL"]   = "5"

  Resque.enqueue( GraphData )
  #resque = Resque.new
  #resque << AdminWorker.new
end # }}}

ご覧のとおり、GraphDataクラスでは、self.performメソッドの下でファイルに書き込んでいます。

私の問題はそうではないということです!私は何か間違ったことをした?

rake graph_data出力は表示されません。Web インターフェイスの にジョブが表示されますQueue

追加情報

RakeWeb インターフェイスを実行するための別のタスクを追加しました。

desc "Start Resque Web Frontend" # {{{
task :resque_web_frontend do |t|
  sh "resque-web -p 8282"
  puts "Resque Web Frontend is running on http://localhost:8282"
end # }}

それらについて、興味深いことがいくつか見られます。rake タスクを実行するとstatspending値が増加しますが、処理されません。

queues -> graph_data の下に、このようなものが表示されます。

Class   Args
GraphData   []
GraphData   []
GraphData   []

私が終わったもの

desc "Start Resque Workers for Queue" # {{{
task :graph_data do |t|

  ENV["QUEUE"]      = "*"
  ENV["VVERBOSE"]   = "1"
  ENV["INTERVAL"]   = "5"

  Rake::Task[ "resque:work" ].invoke
  Resque.enqueue( GraphData )
  #resque = Resque.new
  #resque << AdminWorker.new
end # }}}
4

1 に答える 1