gpt4 book ai didi

algorithm - 你如何编写一个 cronjob 在中午 12 点和中午 12 点之后只运行一次

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:26 25 4
gpt4 key购买 nike

我遇到了以下问题:

  1. 有两个类次。一个类次从凌晨 12 点开始,另一个类次从中午 12 点开始。
  2. 在每个轮类开始时,生成一些任务(细节不重要)。

通常,这是一个可以用 crontab 解决的小问题。但是,我的公司在 Heroku 上运行,Heroku Scheduler 具有以下有趣的属性:

  1. 只能每 10 分钟、每小时或每天运行一次,
  2. 您无法确定调度程序实际启动的时间。如果您的调度程序每 10 分钟运行一次,那么您可以预期它会在凌晨 4:00 到凌晨 4:10 之间运行。
  3. 调度程序可能会遇到一些错误和崩溃。发生这种情况时,调度程序将立即重新启动。例如,如果调度程序在运行时在 4:00 崩溃,它可能会在 4:01 再次运行。

是否可以实现一个 cronjob:

  1. 只在中午 12 点和中午 12 点之后执行一次
  2. 不需要数据库来跟踪其执行时间?

最佳答案

我能想到的一种方法是让一些 cron 服务器(不在 Heroku 上)在上午 12 点和下午 12 点运行脚本。cron 调用的脚本可以使用 Heroku Platform API启动一个one-off dyno在您的 Heroku 应用程序中(使用 Dyno Create 端点)。

此方法满足您只在中午 12 点和中午 12 点执行一次的要求,而无需使用数据库来跟踪执行时间。

此方法的缺点是它不是“纯 Heroku”解决方案,并且需要您维护一些“外部”服务器来触发您的 cron 作业。

如果您不喜欢为此维护您自己的 cron 服务器的想法,您可以使用一些云解决方案来安排您的脚本。例如,我想您可以使用 AWS Lambda with Scheduled Events 免费执行此操作.在这种情况下,您可以安排您的 lambda 函数在每天中午 12 点和中午 12 点运行,并且您的 lambda 函数将启动您的 Heroku 一次关闭测功机。

当然,如果您愿意将某种形式的数据库添加到您的 Heroku 应用程序,您可以轻松创建一个“纯 Heroku”解决方案。

关于algorithm - 你如何编写一个 cronjob 在中午 12 点和中午 12 点之后只运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50479697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com