在任务调度系统中,following() 函数用于确定任务的下一个执行时间。其基本规则是按照 due + k * interval 的模式来安排任务的执行。这里的 due 是任务的初始执行时间,interval 是任务执行的时间间隔,而 k 是一个整数,表示任务执行的次数。然而,在实际应用中,如果任务执行时队列已满,系统可能会将任务的 next_run_at 设置为 now + 60s,即当前时间加上60秒。这样,原本的执行网格就会发生改变,因为 due 被更新了。由于 request_key 是基于 due 生成的,这意味着即使任务看起来像是重试,它实际上使用的是一个新的 request_key,从而在任务调度中创建了一个新的槽位。