Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Heroku上100%可靠的时钟进程?_Ruby On Rails_Heroku_Delayed Job_Ruby On Rails 5_Clockwork - Fatal编程技术网

Ruby on rails Heroku上100%可靠的时钟进程?

Ruby on rails Heroku上100%可靠的时钟进程?,ruby-on-rails,heroku,delayed-job,ruby-on-rails-5,clockwork,Ruby On Rails,Heroku,Delayed Job,Ruby On Rails 5,Clockwork,我正在使用Heroku上的Rails 5作为一个非常精简的支付处理应用程序,它将进行大量的处理 该应用程序没有太多的功能,这就是为什么它被托管在那里。然而,它需要100%可靠地运行支付处理作业,并且只运行某些作业一次。如果不是100%(因为没有什么是完美的),则低于99.9999% 为了这个额外的数据库完整性,我选择了Delayed Job而不是Sidekiq。我还计划使用发条系统gem 在阅读了问题之后,当dynos重新启动时,时钟进程运行了很多次,这似乎有很多问题 我想知道用Rails/He

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

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

为了这个额外的数据库完整性,我选择了
Delayed Job
而不是
Sidekiq
。我还计划使用
发条系统
gem

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

我想知道用
Rails
/
Heroku
解决这个问题的最佳方法是什么。我如何能够非常、非常可靠地只运行一次特定的作业,而不考虑重新启动或其他情况


另外,我忘了提到一些作业可以多次重新运行。这些工作很可能是每天或任何时候都要运行的工作。我真的不关心他们


我还讨论了Rails操作中的作业计划(这些将是关键的)。如果延迟的作业在中间操作时重新启动,
web
dyno重新启动是否可能阻止延迟的作业从我的代码中调度作业?

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

AHhh我明白了,这是有意义的。你能看看我在原来问题上的补充吗?(我以前忘了说这个)你想在你的定期工作中存在相同的状态。不同的是,当您将作业设置为“完成”时,您会将新作业创建为“挂起”(或者可以使用新的开始时间将状态设置为“挂起”)。我更喜欢创建一个新的工作,这样你就可以看到工作完成的历史。顺便说一下,我以前在sidekiq中使用过这个gem来创建可靠的工作。我相信延迟的工作和它一样有效。