Sidekiq与Capistrano(2.x) - 是否需要在每次提交后重新启动Sidekiq?

时间:2016-02-28 21:42:03

标签: ruby-on-rails ruby capistrano sidekiq

我正在玩Sidekiq并使用Capistrano部署应用程序。

到目前为止,我正在使用gem 'capistrano-sidekiq' , group: :development gem,因为我之前使用的是DelaydedJob,我需要从当前的部署文件中删除这些行:

set :delayed_job_command, "bin/delayed_job"
after "deploy:start", "delayed_job:start"
after "deploy:stop", "delayed_job:stop"

我需要为Sidekiq添加到Capistrano以确保Sidekiq一直运行(意味着在将一些代码部署到服务器后它不会被中断/停止?

或者,在每次部署之后,gem会自动(重新)启动Sidekiq吗?

1 个答案:

答案 0 :(得分:0)

Sidekiq在部署后在Capistrano 2.x中自动重启。

管理它的capistrano-sidekiq gem说:

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 / tasks / 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部署配置,您的部署过程将如下所示: cap deploy proc

所以 - 基于此,你可以确认它每次都会重启。您可以使用Capistrano 2手动更改部署过程,如果您这样做,或者您也可以更改:sidekiq_default_hooks变量并定义您自己的Sidekiq过程。