3

resque-statusをテストするための非常に基本的なSinatraアプリがあります

require 'sinatra/base'
require 'resque' require 'resque/job_with_status'

class SleepJob < Resque::JobWithStatus

  def perform
    total = options['length'].to_i || 1000
    num = 0 
    while num < total
      at(num, total, "At #{num} of #{total}")
      sleep(1)
      num += 1
    end 
    completed
  end 

end

class App < Sinatra::Base
  get '/' do
    info = Resque.info
    out = "<html><head><title>Resque Demo</title></head><body>"
    out << "<p>"
    out << "There are #{info[:pending]} pending and "
    out << "#{info[:processed]} processed jobs across #{info[:queues]} queues."
    out << "</p>"
    out << "<form action='/sleep' method='POST''>"
    out << '<input type="submit" value="Sleep Job"/>'
    out << '&nbsp;&nbsp;<a href="/resque/">View Resque</a>'
    out << '</form>'
    out << "</body></html>"
    out 
  end 

  post '/sleep' do
    job_id = SleepJob.create(:length => 100)
    redirect "/resque/"
  end 
end

[ステータス] タブで、ジョブに 1 つの引数があることがわかります。

SleepJob({"length"=>100})

ただし、ステータスは次のメッセージで失敗に設定されます。

The task failed because of an error: wrong number of arguments (0 for 1)

誰が問題が何であるか知っていますか?

ありがとう。

4

0 に答える 0