Спасение - Не Обрабатывать Очереди


У меня есть веб-приложение, которое я создал с помощью Sinatra. С недавних пор мне нужно было регулярно собирать данные и хранить их в базе данных. Для этого мне сказали, что я могу использовать Resque и Clockwork драгоценные камни в комбайне.

Каждый час или около того мне нужно делать около 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 не покажет никакого выхода. Веб-интерфейс покажет задание в Queue.

Дополнительная Информация

Я добавил еще одну задачу Rake для запуск веб-интерфейса.

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 увеличивается, но не обрабатывается.

Под очередями - > 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 # }}}
1 2

1 ответ:

Это в разработке или производстве? От того, что вы описываете, похоже, что вы не запуск спасательная процесса. Как вы запускаете свое приложение? Я более знаком с использованием Resque с Rails, но вы должны запустить что-то вроде:

rake resque:work QUEUE='*'

Чтобы запустить Resque worker.