【问题标题】:How to check if rufus-scheduler is already running for my Rails Application如何检查 rufus-scheduler 是否已经为我的 Rails 应用程序运行
【发布时间】:2017-04-01 17:33:46
【问题描述】:

我有一个 Rails 应用程序,它使用 rufus-scheduler 来安排它的一些任务。调度程序在启动 Rails 应用程序的独角兽脚本的 after_fork 中初始化(参考:https://gist.github.com/jkraemer/3851917)。

最近,我遇到了一个场景,即 unicorn 调度程序线程被杀死,而托管它的 unicorn 进程仍然处于活动状态。这会导致调度程序在没有通知的情况下停机很长一段时间。

我想设置一个警报和监控系统来处理应该能够: 1. 每当调度程序线程被杀死/中止时抛出警报。 2. 如果 Rails 进程正在运行,则重新启动调度程序。

什么是了解调度程序运行状态的合适方法,可能是通过 cron 任务并处理自动重启?

【问题讨论】:

    标签: ruby-on-rails unicorn rufus-scheduler


    【解决方案1】:

    如果你引入一个 cron 任务来观看 rufus-scheduler,为什么不干脆放弃 rufus-scheduler 并使用 Whenever 进行所有调度?因此,您将拥有 100% 的 crond 解决方案。

    另一种选择,使用Foreman 来管理 a) 您的 Rails 应用程序 b) 托管您的 rufus-scheduler 计划的单独进程(它可能是 Rails 应用程序的“仅计划”版本)(这是一个很好的例子blog post)。还有God

    如果你看看 Clockwork,一个受 rufus-scheduler 启发的 gem,他们detail 这样一个应用程序/多个进程的场景。

    然后您可以查看各种工具来查看您的日志并在出现错误时提醒您。

    更新:

    也许这个要点会有所帮助:https://gist.github.com/jmettraux/5f716c8568f6ab7bb016a4bc11528bc2

    【讨论】:

    • 非常感谢您提供详细的建议列表。将尝试他们。无法使用 100% cron 调度,因为我需要将某些任务安排在 1 分钟以下的频率。
    • 通过上帝脚本进行监控,如何从应用程序外部访问调度程序实例?
    • 您必须自己实现该访问权限。
    • 非常感谢您提供的要点。巨大的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多