2014-02-24 30 views
1

夥計。Rails 4:如何實現頻繁的輪詢任務(每10秒)

我正在研究Rails 4應用程序,需要每10秒輪詢一次數據。 對等體是小型的嵌入式系統,它返回一個time_stamp和一些我發佈到數據庫的數據。我在Ubuntu 12.04 64位上使用MRI 2.0.0 + Rails 4.0.0。

以這種方式,我在我的application.rb中創建了一個「類似單例」的服務對象,並讓它運行一個同步的輪詢線程。這個輪詢器將我的ActiveRecord模型更新到數據庫中。

我瞭解到,在Ruby/Rails中不建議使用線程。但不幸的是,我找不到任何其他解決方案。這種輪詢機制對應用程序數據捕獲例程非常重要,並且正在耗盡我的時間。

現在,我已經在兩個「unkowns」了:

1>是否有這個應用程序結構的任何解決方案?線程是一個可行的解決方案嗎? 2>由於我仍然處於開發模式,只有一個「瘦」的運行。當我的應用程序在nginx/apache部署背後聚集3「thins」時會剎車嗎?

在此先感謝。

回答

1

結賬Resque,DelayedJobSidekiq。您希望有一個獨立的進程執行後臺任務管理,因此您的Rails應用程序主要關注處理Web請求,而不是後臺工作。

+0

謝謝你的時間,朱迪。 其實你提到隊列工具,但我需要週期性的10s網絡民意調查來更新應用程序數據和*可能*推到DB = | 這就是爲什麼我在這個問題上「痛苦」。線程在dev中工作正常。雖然他們看起來不太優雅。但他們工作。無論如何,我會給Sidekiq一個嘗試,看看現在會發生什麼。 – Arnauld

+0

是的,我明白了。我提到的那些庫基本上是線程的核心,它們更加優雅。它們還允許你在多臺機器之間分配工作,這是線程無法做到的。我對延遲工作很有經驗,並且您會發現設置並開始使用非常容易。 – Judy

+0

太棒了! DJ會讓我安排10s民意調查嗎? 我開始考慮在我的數據庫中使用內存表,並將它用作輪詢結果的共享記分卡。必須與DJ一起嘗試組合方法。閱讀文檔=] – Arnauld