2016-12-28 57 views

回答

2

您可以檢查sidekiq和Redis的服務器運行或不運行方式:

def redis_connected? 
    !!Sidekiq.redis(&:info) rescue false 
    end 

    def sidekiq_connected? 
    ps = Sidekiq::ProcessSet.new 
    ps.size > 0 ? true : false 
    end 

,你也可以從你的控制器開始,但這不是一個好辦法,因爲它會啓動sidekiq但殺軌服務器。

def start_sidekiq 
    system "redis-server &" if !redis_connected? 
    system "bundle exec sidekiq -d" if !sidekiq_connected? 
    flash[:sidekiq_notification]="Starting server... Please refresh after few seconds" 
    redirect_to :back 
    end 

或安裝並使用服務器監控工具

+0

謝謝您的回答nitisha它解決了我從我的控制器運行sidekiq的一半問題,但它創造的是殺死我的Rails應用程序的一個大問題:( –

+0

安裝和使用的服務器監控工具 – Nitisha

+0

驚人....雅阿這個工程...非常感謝@Nitisha –

1

它不應該是你的應用程序的責任,開始外部程序。

安裝並使用服務器監控工具,如bluepillgod以確保所有依賴關係都已啓動並正在運行。

+0

感謝的建議,但如果我需要管理從我的應用程序中,我該如何處理?任何想法 ?? –

1

我相信,這是一個錯誤的方式來做到這一點。

我建議你設置一個monitorring系統,它會自動啓動你失敗的工作人員 - 你可以使用GodMonit或任何你喜歡的。

不過,如果你真的需要它,你可以執行系統從Ruby調用 - 只是把它包在``或%x{}(例如%x{ bundle exec sidekiq }