1

神に2つのプロセスを順番に開始させることは可能ですか?

Redisに依存するSidekiqを使用しています。Redis を起動してから Sidekiq を起動したいのですが、独立して正常に動作する 2 つの別々のウォッチをセットアップしていますが、実行する

$ god -c "./config.god" -D

と、神が両方を同時に起動しようとしているようで、Sidekiq でエラーが発生する可能性があります。 Redis サーバーに接続します。

神のための私の設定ファイルは以下の通りです:

# config.god
PROJECT_ROOT = ENV['PROJECT_ROOT'] || "/Path/to/app"

God.watch do |w|
  w.name = "redis-server"
  w.group = 'conversion-api'
  w.interval = 30.seconds
  w.start = "/usr/local/Cellar/redis/2.4.16/bin/redis-server"
end

God.watch do |w|
  w.name = "sidekiq"
  w.group = 'conversion-api'
  w.interval = 20.seconds
  w.dir = ENV['PROJECT_ROOT'] 
  w.start = "bundle exec sidekiq -v -C #{PROJECT_ROOT}/config.yml -r #{PROJECT_ROOT}/app.rb -c 10"
  w.stop = "bundle exec sidekiqctl stop #{PROJECT_ROOT}/tmp/pids/sidekiq.pid 5"
  w.keepalive
  # Don't pass in a pid file location. Let God handle things. Leaving a pid file location in
  # the sidekiq config.yml seems to be harmless though and it lets us force stop sidekiq independently 
  # of God.
  # w.pid_file = File.join(PROJECT_ROOT, 'tmp/pids/sidekiq.pid')
  w.log = "./log/god_sidekiq.log"
  w.behavior(:clean_pid_file)
end
4

1 に答える 1

0

また、起動順序の制御についても疑問に思っていました。sidekiq ウォッチ オブジェクトでウォッチ トランジション メソッドを使用して、redis プロセスが実行されているかどうかを確認する可能性を検討し始めました。時間がなくなって、「sleep 5;」のハックを配置しました。sidekiq の開始前と redis のシャットダウン前。

于 2013-03-29T15:57:20.543 に答える