我想检查我是否没有在 heroku 上创建无限数量的工人。
我有以下工作是由 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 创建单独的队列吗?