3

我有一个非常基本的 Sinatra 应用程序来测试 resque-status

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