У меня есть приложения, использующие Resque для фоновых процессов. Так что я
-/app/workers/dataCollector.rb
и в контроллере:
def new
@my_model = MyModel.new(params[:])
Resque.enqueue(DataCollector, @my_model.id)
end
Я хочу добавить еще одного воркера, который в какой-то момент получит некоторую информацию из dataCollector и обработает ее.
поэтому я попробовал:
-app/workers/dataCollector.rb
/dataProcessor.rb
и в моем классе MyModel:
def my_function
...
data.each do |d|
Resque.enqueue(DataProcessor, data)
end
end
мой новый рабочий выглядел так:
class DataProcessor
@queue = :processing_queue
def self.perform(data)
new_var = processingFunction(data)
newModel.column = new_var
end
end
В результате возникла ошибка «Слишком глубокий уровень стека».
Я запускал программу один раз локально ... с
bundle exec env rake resque:work QUEUE='*'
redis-server /usr/local/etc/redis.conf
и никогда не увидеть processing_queue в веб-интерфейсе восстановления.