Resque-不处理队列



我有一个使用Sinatra构建的基于web的应用程序。从最近开始,我需要定期收集数据并将其存储在数据库中。为此,我被告知可以将ResqueClockwork宝石组合使用。

每隔一个小时左右,我就需要根据数据库进行近15次计算,并将结果存储在数据库中。

这就是我所采取的方法。我决定制作15个具有perform方法的类(下面是我用于测试的确切文件)。然后对所有15个类执行类似于Resque.enqueue( GraphData )的操作。

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 # }}}

这是在开发中还是在生产中?从你的描述来看,你似乎并没有启动Resque过程。你是如何运行你的应用程序的?我更熟悉在Rails中使用Resque,但您应该运行以下内容:

rake resque:work QUEUE='*'

让resque工作人员启动。

最新更新