アカウントのデータを並行して取得する必要があります。そのためにセルロイドを使用しています。
私のコード
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が存在する