我的每项任务都在短时间内完成,然后睡大约一个小时,然后再次工作,依此类推,直到完成工作。有些工作可能需要大约 10 个小时才能完成,而我对此无能为力。
困扰我的是,当工作正在睡觉时,resque 工人会很忙,所以如果我有 4 个工人和 5 个工作,最后一个工作将不得不等待 10 个小时才能处理,这是非常不理想的,因为它可以在任何其他工作时工作工人正在睡觉。有没有办法让 resque 工作者在当前工作处于休眠状态时处理其他工作?
目前我有一个类似这样的工人:
class ImportSongs
def self.perform(api_token, songs)
api = API.new api_token
songs.each_with_index do |song, i|
# make current worker proceed with another job while it's sleeping
sleep 60*60 if i != 0 && i % 100 == 0
api.import_song song
end
end
end