當前狀況: 我有一個Ra應用程序,帶有N個延遲的工作人員。無論何時我想向某臺機器發送SSH請求,我都會爲該工作人員創建一個任務。工人執行類似的操作:Rails +延遲作業:SSH連接池
Net:SSH.start(hostname, username, :password => pass) do |ssh|
ssh.exec!(command)
end
有時候我會創建例如50個這樣的任務要一一執行,或者在5-10分鐘之內完成。在這種情況下,每個任務都會打開單獨的連接,但這種連接無效,有時由於連接太多而被目標服務器阻止。
我想要什麼:已打開連接存儲在某處並被每個工作人員重新使用。所以每個工人獲得連接不知何故,然後只需運行
ssh.exec!(command)
我已經試過:
- 存儲在文件/數據庫連接/緩存看起來是因爲它們不是序列化不可能
- 已嘗試使用初始化器下實例化的全局變量的單例類。然而,每個工作者的類對象是不同的(後來發現全局變量不能作爲選項)。
有沒有辦法解決這個問題?任何其他想法?謝謝!!
你的任務是否持續了一段時間,還是你只是不同步SSH任務? –
任務實際上並未延遲,但更像是排隊。例如,有一個操作A,在這個操作中,執行一堆ssh命令,然後執行任務B(5-10分鐘),然後執行任務C(再次執行ssh請求) –