Ruby on rails 使用resque以1分钟的间隔发送通知

Ruby on rails 使用resque以1分钟的间隔发送通知,ruby-on-rails,google-cloud-messaging,resque,Ruby On Rails,Google Cloud Messaging,Resque,我正在尝试使用GCM和resque向用户发送通知。目前,它正在向所有用户发送消息,并且由于用户太多而使服务器处于峰值状态。因此,我尝试的方法是每分钟向1000个用户发送消息 有没有办法为resque设置该选项 我有一个想法,循环遍历所有用户,然后批量处理1000个用户。当仍在循环中时,超时60秒。 但我认为这种方法不好。你可以试试: 使用索引批量查找用户,因此可以使用索引计算延迟时间 使用wait选项延迟作业,而不是超时 类GCMJob

我正在尝试使用GCM和resque向用户发送通知。目前,它正在向所有用户发送消息,并且由于用户太多而使服务器处于峰值状态。因此,我尝试的方法是每分钟向1000个用户发送消息

有没有办法为resque设置该选项

我有一个想法,循环遍历所有用户,然后批量处理1000个用户。当仍在循环中时,超时60秒。 但我认为这种方法不好。

你可以试试:

  • 使用索引批量查找用户,因此可以使用索引计算延迟时间
  • 使用
    wait
    选项延迟作业,而不是超时

    类GCMJob您没有利用GCM主题信息的任何原因?
    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