2017-03-31 66 views
1

我有一個Rails應用程序使用rufus-scheduler來調度它的一些任務。調度程序在啓動Rails應用程序的獨角獸腳本的after_fork中初始化(參考:https://gist.github.com/jkraemer/3851917)。如何檢查rufus-scheduler是否已經在運行我的Rails應用程序

最近,我遇到了獨角獸調度程序線程被殺死的情況,而託管它的獨角獸進程仍處於活動狀態。這導致調度程序在相當長的一段時間內無法通知。

我想建立一個警報和監控系統來處理這樣的場景: 1.每當調度器線程終止/中止時拋出警報。 2.如果Rails進程正在運行,請重新啓動調度程序。

通過可能的cron任務並處理自動重啓,什麼纔是知道調度程序運行狀態的合適方法?

回答

1

如果你帶一個cron任務來觀察rufus-scheduler,爲什麼不簡單地放棄rufus-scheduler並且使用Whenever來進行所有的調度?您將因此擁有100%的crond解決方案。

另一種替代方法是使用Foreman來管理a)您的Rails應用程序b)一個單獨的進程來管理您的rufus調度程序調度(它可能是Rails應用程序的「僅調度」版本)(這裏是一個很好的示例blog post)。還有God

如果你看看發條,這是一款受rufus調度程序啓發的寶石,它們就是這樣一個應用程序/多個進程情景。

然後你可以看看那裏的各種工具來觀看你的日誌,並在出現錯誤時提醒你。

更新:

也許這個要點可以幫助:https://gist.github.com/jmettraux/5f716c8568f6ab7bb016a4bc11528bc2

+1

感謝很多的建議的詳細清單。試試看。由於我需要在1分鐘的頻率以下安排某些任務,因此無法使用100%cron調度。 – elixir

+0

對於通過上帝腳本進行監控,如何從應用程序外部訪問調度程序實例? – elixir

+0

您必須自己實現該訪問。 – jmettraux

相關問題