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
。
追加情報
Rake
Web インターフェイスを実行するための別のタスクを追加しました。
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 タスクを実行するとstats
、pending
値が増加しますが、処理されません。
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 # }}}