Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用God Gem设置进程启动顺序_Ruby_Redis_God_Sidekiq - Fatal编程技术网

Ruby 使用God Gem设置进程启动顺序

Ruby 使用God Gem设置进程启动顺序,ruby,redis,god,sidekiq,Ruby,Redis,God,Sidekiq,是否可以让上帝按顺序启动两个进程? 我正在使用依赖Redis的Sidekiq。我想启动Redis,然后启动Sidekiq,我设置了两个独立的手表,它们可以独立工作,但是当我运行时: $god-c.“/config.god”-D 似乎上帝试图同时启动这两个程序,导致Sidekiq出错,因为它无法连接到Redis服务器 我的上帝配置文件如下: # config.god PROJECT_ROOT = ENV['PROJECT_ROOT'] || "/Path/to/app" God.wat

是否可以让上帝按顺序启动两个进程?

我正在使用依赖Redis的Sidekiq。我想启动Redis,然后启动Sidekiq,我设置了两个独立的手表,它们可以独立工作,但是当我运行时:


$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

我还想知道如何控制启动顺序。我开始考虑在sidekiq watch对象上使用watch transition方法的可能性,并检查redis进程是否正在运行:可能是通过God.watchs[“redis”]。state==:up,然后启动sidekiq。时间不多了,在sidekiq启动和redis关闭之前,我们刚刚播放了一段“sleep 5;”。

最终抛弃了God,因为它被证明和它的名字一样可靠。换成了“暴发户”的工头,我得在这个问题上多花点时间。如果有人到这里来寻找解决方案,这里有一个描述。