如果不在运行状态,则自动启动Sidekiq-Rails

Jai*_*put 5 ruby ruby-on-rails redis ruby-on-rails-3 sidekiq

我使用的是redis serversidekiq我的cron作业,但一段时间后sidekiq在后台自动杀死。

我想sidekiq从控制器的操作中重新启动,或者在它停止运行时自动重新启动而不停止我的Rails应用程序服务器。

请建议我如何处理此问题?

Nit*_*sha 6

您可以通过以下方式检查 sidekiq 和 redis 服务器是否运行:

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

  def sidekiq_connected?
    ps = Sidekiq::ProcessSet.new
    ps.size > 0 ? true : false 
  end
Run Code Online (Sandbox Code Playgroud)

你也可以从你的控制器开始,但这不是一个好方法,因为它会启动 sidekiq 但会杀死 Rails 服务器。

  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
Run Code Online (Sandbox Code Playgroud)

或安装并使用服务器监控工具