繁体   English   中英

Shedlock 和临时停止任务?

[英]Shedlock and temporary stop task(s)?

在多台服务器上运行多个计划任务时,Shedlock 看起来很棒,但有时,我们也需要短时间或长时间地暂停一些任务。 当然,可以使用附加属性/标志来控制每个任务,但我的建议是也为此使用 Shedlock,并为我们希望停止的任务引入逻辑“节点/服务器”,并更新 shedlock 中的行- 锁定该节点的表,并在未来设置一个lockedAt 时间,并将lockUntil 设置为future + 1 秒(因此不会触发超过maxRunning 的时间)。 然后它将自动重新启动,或者我们可以 go 并在需要时将时间移到未来。

对 Shedlock 的这种使用有什么想法……聪明还是坏习惯? 它仍然用于锁定,只是将作业锁定到逻辑假服务器。

为此,有可能(误用)ShedLock。 您正在查找的更新可能如下所示:

update shedlock set lock_until = :future, locked_at = now(), locked_by = "manual" where 
      name = :name and lock_until < now()

重要的部分是条件lock_until < now() ,它可以防止干预正在运行的任务的现有锁。 您不必设置locked_by ,因为它大多被库忽略。 最好设置它以防其他人想知道为什么没有执行任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM