我想檢查一下我是不是在heroku上創建了無數的工人。Sidekiq架構問題
我有一個是由發條寶石開始在Heroku以下工作:
every 5.minutes, SyncAccounts
同步帳戶看起來是這樣的:
def perform
UserRepo.all.each do |user|
EnqueueFolderSyncJobs.perform_async user.id
SyncContacts.perform_async user.id
SyncMeetings.perform_async user.id
end
end
它循環通過每一個用戶,並造成進一步的工人。這些工人可能會產生更多的工人,例如,EnqueFolderSyncJobs創建一個工人同步IMAP文件夾:
google.email.folders.each do |folder|
SyncFolder.perform_async user_id, folder unless skip?(folder)
end
每5分鐘那麼這種情況正在發生。
調用perform_async是否意味着該作業只發生一次?
我是否需要在所有這些結束時撥打電話?
此外,所有工作人員都在相同的隊列下創建,我應該爲SyncFolders創建單獨的隊列嗎?