私は20,000から30,000人のユーザーがおり、与えられた時間にメッセージを受け取るはずです。 SendMessage
は、サードパーティのサイトに対してAPI呼び出しを行うサービスです。私はこのループを持っている:大きなループのたびに新しいスレッドを呼び出す
@users.each do |user|
...
SendMessage.new(user.id)
...
end
ユーザーのかなりの数が多いので、APIの応答は約1秒かかり、最後のユーザーがあまりにも後でスケジュールされた時間よりメッセージを受け取ります。
私はこのようなThread
を使用するのではと思った:
@users.each do |user|
...
Thread.new{ SendMessage.new(user.id) }
...
end
は、私は上記のように行うことができますか?ループ内でThread.new
20,000回を使用することをお勧めしますか?何か欠点はありますか?私は何か他にやるべきことはありますか?
同期する必要がありますか? –
いいえ、それは非同期にすることができます –