Sid部署后,ekiq会在Capistrano 2.x中自动重新启动。
Capistrano酒店 - sidekiq宝石负责管理,它说:
if fetch(:sidekiq_default_hooks)
before 'deploy:update_code', 'sidekiq:quiet'
after 'deploy:stop', 'sidekiq:stop'
after 'deploy:start', 'sidekiq:start'
before 'deploy:restart', 'sidekiq:restart'
end
上线的宝石文件的lib/Capistrano酒店/任务/ capistrano2.rb 26-31。
:sidekiq_default_hooks在块
Capistrano::Configuration.instance.load do
_cset(:sidekiq_default_hooks) { true }
它的上方设置所以它是由配置对于该特定环境中加载一个Capistrano的实例变量。
的sidekiq:quiet命令运行
run_as "if [ -d #{current_path} ] && [ -f #{pid_file} ] && kill -0 `cat #{pid_file}`> /dev/null 2>&1; then cd #{current_path} && #{fetch(:sidekiqctl_cmd)} quiet #{pid_file} ; else echo 'Sidekiq is not running'; fi"
而且我通过使用默认Capistrano的2部署配置假设你的部署过程看起来像:
所以 - 根据您可以确认它每次都会重新启动。如果您愿意,可以使用Capistrano 2手动更改部署过程,或者也可以更改:sidekiq_default_hooks变量并以这种方式定义您自己的Sidekiq过程。
您希望sidekiq重新启动。如果没有,那么你的工作将会有陈旧的代码。所有这些都在内存中运行。所以如果你更新你的rails代码,只是部署新的代码将不会更新sidekiq中运行的代码。 – unflores
我回答了您的问题吗? – noname