我是新來的Rails和多線程,並且很好奇如何以最優雅的方式實現以下功能。 我找不到任何漂亮的教程,詳細解釋了什麼是以下任務的最佳設計決策:如何創建等待作業並執行它們的工作守護進程?
我有幾個HTTP請求將在後臺爲用戶運行,例如,解析耦合網站,並獲得一些信息,如HTTP響應代碼,響應時間,然後返回結果。出於性能方面的原因,我決定拆分URL的總數來解析每批25個,然後在一個線程中執行每個批處理,加入這些批處理並將結果寫入數據庫。
我決定用下面的寶石(http://rubygems.org/gems/thread),以確保有是同時運行的線程的最大數量。到現在爲止還挺好。
問題是,如果兩個用戶並行開始分析,最大線程數是我的線程池的最大值的兩倍。
我的解決方案(imho)是創建一個自己運行並等待來自客戶端的作業的工作守護進程。
我的問題是,什麼是最好的方式來實現這個在Rails中?
也許創建一個Rake任務,並把它作爲一個守護進程(請參見:「Daemoninsing a rake task」)以及(如何?)增加就業機會呢?
非常感謝您提前!
喜田滿,這看起來很有希望。我會閱讀並明天給你反饋! P.S .:感謝您糾正/澄清我可憐的英語。 :) – madhippie
我擺弄這個寶石,我很滿意。 Typhoeus和Hydra完全符合我的要求!非常感謝你。 – madhippie
感謝作者的寶石。這是一個非常好的工具。 –