5
我有一個應用程序在生產中使用apache +乘客運行。目前,我在初始化器中初始化rufus調度器,並在該初始化器中註冊從db中讀取的作業。 apache/passenger的工作方式是創建應用程序的多個進程/實例,這會導致調度程序多次初始化並安排重複的作業。Rufus調度程序在rails 3中的實現
執行此操作的正確性是什麼,以便調度器是單例對象?
我有一個應用程序在生產中使用apache +乘客運行。目前,我在初始化器中初始化rufus調度器,並在該初始化器中註冊從db中讀取的作業。 apache/passenger的工作方式是創建應用程序的多個進程/實例,這會導致調度程序多次初始化並安排重複的作業。Rufus調度程序在rails 3中的實現
執行此操作的正確性是什麼,以便調度器是單例對象?
您可能想要將Rufus調度程序作爲單獨的工作進程實現在您的應用程序之外。
而不是把它作爲初始化程序,我會實現一個Rake任務來啓動它。
然後只要運行rake scheduler
在後臺啓動它。
獎勵:由於您的應用程序現在需要兩個並行的進程,因此請使用Foreman管理您的應用程序的多個進程。您可以通過創建一個名爲Procfile
文件做到這一點:
# Procfile
web: thin start -p 4242
scheduler: rake scheduler
然後開始與工頭您的應用程序:(一定要gem install foreman
第一)
$ foreman start
這將同時調用這兩個過程。