2

アカウントのデータを並行して取得する必要があります。そのためにセルロイドを使用しています。

私のコード

class Daemon

  def self.start
    loop do
       Account.all.each do |acc|
         unless Celluloid::Actor[account.name]
          supervise_as(account.name, account)
          Celluloid::Actor[account.name].async(:perform)
        end

        sleep 10.minutes
      end
    end

    def initialize(account)
      @account = account
    end

    def perform
      loop do
        do_request

        sleep 10
      end
    end
  end

開始時に、すべてのメンバー (ボブ、アリスなど) に対して常に並列要求を行います。しかし、しばらくすると、1 人のユーザー (例: alice) に対してのみ要求が行われます。

do_request自作の redis キューとCelluloid::Actor.registedすべてのアカウントにPSが存在する

4

0 に答える 0