我有一个大任务,分几个主要步骤进行:步骤 A 必须在步骤 B 开始之前完成,等等。但是每个主要步骤都可以划分为多个进程,在我的例子中,使用Delayed::Job
.
问题:是否有一种简单的技术可以在所有流程都完成步骤 A 之后才开始步骤 B?
注意 1:我不知道有多少外部工作人员已经启动,因此保持已完成工作人员的引用计数无济于事。
注意 2:我不希望创建一个工作人员,其唯一工作是忙于等待其他工作完成。Heroku 工人要花钱!
注意 3:我考虑让每个工作人员检查after
回调中的 Delayed::Job 队列,以确定它是否是在步骤 A 上工作的最后一个,在这种情况下,它可以启动步骤 B。这可能有效,但似乎可能充满陷阱。(在没有更好的答案的情况下,这是我要采用的方法。)