每当宝石不是每2秒钟工作一次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每当宝石不是每2秒钟工作一次相关的知识,希望对你有一定的参考价值。

我已经实现了什么时候我的后端crons工作的宝石,当我尝试类似的东西时工作正常

every 2.seconds do
  rake "my:rake:task"
end

我收到这个错误

`parse_time': Time must be in minutes or higher (ArgumentError)

我真的想在每几秒后运行这个任务,我该怎么办呢。

答案

你不能用whenever宝石做到这一点。

在引擎盖下,whenever宝石只是创造了一个cron job。这些只能以每分钟的最小粒度配置。

你可以做的是编写一个带有无限循环的shell脚本来运行你的任务,然后睡2秒钟。但是,我会反对它 - 运行这种经常出错的东西。可能有一个更清洁的方法,例如将您的代码作为after_save钩子运行?

另一答案

你得到了错误,因为this是原因

Cron只允许至少一分钟。您可以做的是编写一个带有无限循环的shell脚本来运行您的任务,然后休眠2秒钟。这样,您的任务将每2秒运行一次或多或少,具体取决于任务本身需要多长时间。

这听起来确实像你在做一些你可能不应该做的事情

喜欢循环

while true ; do cd /home/myrailsapp && rake my:rake:task & ; sleep 2; done

或者conrtab看起来像这样

/home/myrailsapp/rakescript.sh

cd /home/myrailsapp && rake my:rake:task

在crontab中

* * * * * /home/myrailsapp/rakescript.sh
* * * * * sleep 2; /home/myrailsapp/rakescript.sh
* * * * * sleep 4; /home/myrailsapp/rakescript.sh
* * * * * sleep 6; /home/myrailsapp/rakescript.sh
另一答案

带轨道转轮的循环工作正常:

loop {
  Ball.update_all_positions
  sleep 2
}

以上是关于每当宝石不是每2秒钟工作一次的主要内容,如果未能解决你的问题,请参考以下文章

如何检查文件是不是正在编辑? (红宝石)

@Schedule 注释每隔几分钟(或几秒钟)运行一次

Android 后台每10秒钟启动一次应用的demo,一次启动,永不退出

VBA Macro On Timer样式每隔几秒钟运行代码,即120秒

请问如何让timer控件每过一秒钟触发一次?

在几秒钟内多次调用 Healthkit 后台交付