【发布时间】:2025-12-05 08:00:02
【问题描述】:
我让 Capistrano 将我的应用程序部署到云主机上的 Ubuntu 远程服务器上。它的工作原理是 Sidekiq 不会重新启动。部署后,新的 Sidekiq 作业被卡在队列中,直到它最终重新启动。我目前手动 SSH 进入机器并运行 sudo initctl stop/start workers ,它可以工作。我对 Capistrano 一点也不强,到目前为止我的研究未能找到解决这个问题的方法。我希望我错过了比我更熟悉的人明显的东西。这是我的 /config/deploy.rb 文件的相关部分:
namespace :deploy do
namespace :sidekiq do
task :quiet do
on roles(:app) do
puts capture("pgrep -f 'workers' | xargs kill -USR1")
end
end
task :restart do
on roles(:app) do
execute :sudo, :initctl, :stop, :workers
execute :sudo, :initctl, :start, :workers
end
end
end
after 'deploy:starting', 'sidekiq:quiet'
after 'deploy:reverted', 'sidekiq:restart'
after 'deploy:published', 'sidekiq:restart'
end
更新
来自我的回复日志:
DEBUG [268bc235] Running /usr/bin/env kill -0 $( cat /home/ubuntu/staging/shared/tmp/pids/sidekiq-0.pid ) as ubuntu@159.203.8.242
DEBUG [268bc235] Command: cd /home/ubuntu/staging/releases/20160806065537 && ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.2.3" ; /usr/bin/env kill -0 $( cat /home/ubuntu/staging/shared/tmp/pids/sidekiq-0.pid ) )
DEBUG [268bc235] Finished in 0.471 seconds with exit status 1 (failed).
【问题讨论】:
标签: ruby-on-rails capistrano sidekiq