2

我正在使用Rails 5一个Heroku非常精简的支付处理应用程序,它将进行大量处理。

该应用程序没有太多功能,这就是它被托管在那里的原因。然而,它需要 100% 可靠地完成的一件事是运行支付处理作业,并且只运行一次。如果不是 100%(因为没有什么是完美的),那就是 99.9999%。

我选择Delayed JobSidekiq这个额外的数据库完整性。我也打算使用Clockwork宝石。

在阅读问题之后,似乎在 dynos 重新启动时,时钟进程运行了很多次。

我想知道用Rails/解决这个问题的最佳方法是什么Heroku。尽管重新启动和其他任何事情,我如何才能非常非常可靠地只运行一次某些作业?


另外,我忘了提到某些作业可以多次重新运行。这些作业很可能是每天或随时运行的作业。我真的不关心他们。

然而,我也在谈论 Rails 操作中的作业计划(这些将是关键操作)。如果在操作中重新启动,测功机重新启动是否可能web会阻止延迟作业从我的代码中安排作业?

4

1 回答 1

1

带状态机。您将作业的状态设置:pending为创建作业时。当作业开始运行时,将状态更改为:running. 作业完成后将状态更改为:complete。仅在作业处于状态时才启动作业,:pending并且具有单独的批处理器来检查:running已达到超时的作业。这样,当作业在完成之前被杀死时,您可以重新启动它们。

于 2016-09-14T17:49:13.213 回答