【问题标题】:Alternative to delayed job for simple cron task on heroku?替代 Heroku 上简单 cron 任务的延迟作业?
【发布时间】:2012-05-15 02:30:54
【问题描述】:

在我在 Heroku 上的 Rails 应用程序中,我想在未来 5 个特定时间(每次大约相隔一天)执行一个简单的代码块,一直到第二个。

有没有没有后台进程的好方法?

我不想使用延迟作业,因为它需要一个成本约为 30 美元/月的 Worker 实例。似乎没有必要。

有没有延迟工作/Heroku Worker 的好方法?

已解决

感谢您的回答 - 似乎没有可靠的方法来实现这一点。处理延迟的工作。

【问题讨论】:

    标签: ruby-on-rails heroku background-process


    【解决方案1】:

    改用 rake 任务和 heroku 调度器

    https://devcenter.heroku.com/articles/scheduler

    调度程序插件将运行一次性进程,这些进程将计入您当月的 dyno-hours。

    【讨论】:

    • 不幸的是,10 分钟是他们提供的最短间隔,而且他们不允许您选择具体时间。另外我认为这和工人一样贵,每小时 5 美分。
    • 费用从您的每月测功机津贴中扣除(所以,是的,如果您的工人已经 100% 使用,则需要付费,否则免费)。如文档A dashboard allows you to configure jobs to run every 10 minutes, every hour, or every day, at a specified time.中所述,因此您可以选择指定时间。
    • 我也看到了关于指定时间的那部分——它们实际上意味着你可以在每天的特定时间运行它(不能选择非常具体的运行时间)。不幸的是,它在半小时内。看起来延迟工作是要走的路。
    【解决方案2】:

    您可以将 Rake 任务与 Heroku 调度程序一起使用,然后添加一些智能逻辑:sleep until job_is_available if job_is_available_in_less_than_twelve_minutes?

    然后,您需要为运行代码的时间以及您的 rake 任务检查作业是否可用所花费的几秒钟时间付费。大约 1-3 美元,因为 Heroku 按比例计算到第二个。

    【讨论】:

    • 这会起作用,但不幸的是,sleep 对于这个目的来说太过分了。看起来延迟工作是要走的路。
    • 别担心,你必须做你必须做的事,但我很想听听更多关于为什么sleep 太 hack-ish。我看不出它有什么商业问题,不过从理论上讲,这是一条可怕的胶带?
    【解决方案3】:

    您可以使用调度程序来执行此操作,您只需要在任务运行时检查日期/小时等 - 因此您可以安排每小时作业(如果这对您有用),然后检查当前日期/小时查看它是否是您要运行该作业的作业,然后在检查中运行它。不理想,但会起作用。

    【讨论】:

    • 这很好,不幸的是它没有给我足够的时间粒度(需要精确到秒)。
    【解决方案4】:

    老问题,但是...

    也许它可以解决你的问题:Sucker Punch

    Heroku 上不需要额外的测功机。并且可以指定5个区块之间的时间。

    【讨论】:

      猜你喜欢
      • 2011-05-19
      • 2013-08-04
      • 2011-03-13
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多