我有一个将 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
产生的错误是“堆栈级别太深”</p>
我在本地运行了一次程序......
bundle exec env rake resque:work QUEUE='*'
redis-server /usr/local/etc/redis.conf
并且永远不会在 resque Web 界面中看到 processing_queue。