5

我有一個應用程序在生產中使用apache +乘客運行。目前,我在初始化器中初始化rufus調度器,並在該初始化器中註冊從db中讀取的作業。 apache/passenger的工作方式是創建應用程序的多個進程/實例,這會導致調度程序多次初始化並安排重複的作業。Rufus調度程序在rails 3中的實現

執行此操作的正確性是什麼,以便調度器是單例對象?

回答

4

您可能想要將Rufus調度程序作爲單獨的工作進程實現在您的應用程序之外。

而不是把它作爲初始化程序,我會實現一個Rake任務來啓動它。

​​

然後只要運行rake scheduler在後臺啓動它。


獎勵:由於您的應用程序現在需要兩個並行的進程,因此請使用Foreman管理您的應用程序的多個進程。您可以通過創建一個名爲Procfile文件做到這一點:

# Procfile 
web:  thin start -p 4242 
scheduler: rake scheduler 

然後開始與工頭您的應用程序:(一定要gem install foreman第一)

$ foreman start 

這將同時調用這兩個過程。