【问题标题】:Run a Rails job at precise time (accurate to the second)在精确的时间运行 Rails 作业(精确到秒)
【发布时间】:2016-06-28 22:40:47
【问题描述】:

我正在制作一个需要以极其精确的时间间隔(比如 30 秒,最大可接受延迟为 +-1 秒)运行作业的应用程序。

我目前正在使用一个外部 Go 应用程序来执行此操作,该应用程序轮询构建在我的应用程序中的 API 端点。

有没有一种方法可以让我在工作机器(例如 Heroku dyno)上以小于一秒的延迟运行任务?

我调查了 Sidekiq 和 delay_job,但两者都有明显的滞后,因此不适合我的应用程序。

【问题讨论】:

    标签: ruby-on-rails delayed-job sidekiq


    【解决方案1】:

    将作业安排在您需要运行之前 60 秒。作为参数传递您需要执行作业的确切时间。然后,运行sleep 直到Time.now == exact_time_down_to_the_second

    【讨论】:

    • 好主意。我更多地考虑了语言中内置的一些东西,但这听起来很棒。如果没有更好的结果,我会接受这个作为答案,主要是因为我可能会不时调用 sleep 来浪费周期。
    • 是的,这有点骇人听闻,但我认为大多数计划作业都很难确保精确执行。我很想知道其他人是否有更好的答案。
    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多