如果 Heroku 每天运行 cron,我们还需要“if time.now.hour...”吗?

发布于 2024-11-04 13:00:27 字数 430 浏览 1 评论 0原文

我试图弄清楚 Heroku 每日 cron 是如何工作的,特别是通过这种方式:

根据 Heroku 自己的 cron 文档< /a>,cron 任务通常这样写:

if Time.now.hour == 0 # run at midnight
  User.send_reminders
end

那么,如果我在午夜以外的时间设置 cron 会发生什么?至少从我的调试来看,似乎每当 Heroku cron 运行时(几乎总是不是在午夜),上面的代码部分都会被忽略。

从 cron.rake 中消除时间元素并在该文档运行时执行简单的 User.send_reminders 语句是否是一种好的做法?

I'm trying to figure out how Heroku daily cron works, specifically in this way:

As per Heroku's own cron docs, cron tasks are often written like this:

if Time.now.hour == 0 # run at midnight
  User.send_reminders
end

Well, what happens if I set up cron at a time other than midnight? At least from my debugging, it seems that whenever Heroku cron runs (nearly always not at midnight), the above section of code is simply ignored.

Is it good practice to eliminate the time element from cron.rake and have the simple statement User.send_reminders, to be executed whenever that document is run?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沧桑㈠ 2024-11-11 13:00:27

Heroku 常见问题解答是这样说的:

Cron 作业根据您的时间执行
启用该附加组件。如果您启用
早上 9:35 每小时加一次,
例如,cron 作业将运行在
每小时整点35分钟;
如果您启用了每日附加组件
同时,它每天都会在
9:35。

我相信这就是我的日常 cron 作业的运行方式,尽管我并没有太注意这一点。我的日常 cron 任务没有任何时间检查。

Heroku 示例中的时间检查在使用每小时 cron 时很有用,但在使用每日 cron 时则不然。

The Heroku FAQ says this:

Cron jobs execute based on when you
enable the add-on. If you enable the
hourly add-on at 9:35 in the morning,
for instance, the cron job will run at
35 minutes past the hour every hour;
if you enabled the daily add-on at the
same time, it would run every day at
9:35.

I believe this is how my daily cron jobs run, although I didn't pay too much attention to that. I don't have any time checks in my daily cron task.

The time check in the Heroku example would be useful when using hourly cron, but not when using daily.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文