Resque - 不处理队列

Ziy*_*een 2 ruby resque

我有一个基于Web的应用程序,我使用Sinatra构建.从最近起,我需要定期收集数据并将它们存储在数据库中.为此我被告知我可以使用ResqueClockwork宝石结合.

每隔一小时左右,我需要根据数据库进行近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
Run Code Online (Sandbox Code Playgroud)

为了触发测试操作,我创建了一个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 # }}}
Run Code Online (Sandbox Code Playgroud)

如你所见,在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 # }}
Run Code Online (Sandbox Code Playgroud)

在他们看来,有些事情很有趣.当我运行rake任务,下statspending值增大,但不处理.

在队列下 - > graph_data我看到这样的事情.

Class   Args
GraphData   []
GraphData   []
GraphData   []
Run Code Online (Sandbox Code Playgroud)

我最终得到了什么:

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 # }}}
Run Code Online (Sandbox Code Playgroud)

Mar*_*tin 6

这是在开发还是生产?从您描述的内容来看,您似乎并没有推出Resque流程.你是如何运行你的应用程序的?我更熟悉使用Resque with Rails,但是你应该运行类似的东西:

rake resque:work QUEUE='*'
Run Code Online (Sandbox Code Playgroud)

让resque工人开始.