我正在尝试使用GCM和resque向用户发送通知。目前它正在向所有用户发送消息,并且由于用户太多,它会加入服务器。所以我想要的是每分钟向1000个用户发送消息。
有没有办法为resque设置它?
我有一件事情在于循环遍历所有用户,然后将用户批量为1000.虽然仍然在循环内部使超时为60秒。 但我认为这种做法很糟糕。
答案 0 :(得分:1)
您可以尝试:
wait
选项延迟作业而不是超时。 User.find_in_batches.with_index do |group, index|
puts "Processing group ##{index}"
GCMJob.set(wait: index.minutes).perform_later(group.ids) # each batch will have 60 seconds in between
end
class GCMJob < ActiveJob::Base
def perform(user_ids)
users = User.where(id: user_ids)
users.map(&:send_gcm_message)
end
end