Rails:如何重新启动sidekiq?

Can*_*Can 22 ruby ruby-on-rails ruby-on-rails-3 sidekiq

我正在使用sidekiq gem在后台运行API调用.我在守护进程中运行sidekiq,如:

  bundle exec sidekiq -d
Run Code Online (Sandbox Code Playgroud)

现在我在我的方法中做了一些更改,所以我想重新启动sidekiq.我试图使用以下命令杀死sidekiq:

  kill -9 process_id 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我想知道重启sidekiq进程的命令.如果您有任何想法请与我分享.

我也尝试了下面的命令:

 sidekiqctl stop /path/to/pid file/pids/sidekiq.pid
Run Code Online (Sandbox Code Playgroud)

hlc*_*lcs 48

开始:

$ bundle exec sidekiq -d -P tmp/sidekiq.pid -L log/sidekiq.log 
Run Code Online (Sandbox Code Playgroud)

其中-d妖魔化,-PPID文件,-L日志文件.

停止:

$ bundle exec sidekiqctl stop tmp/sidekiq.pid 0
Sidekiq shut down gracefully.
Run Code Online (Sandbox Code Playgroud)

其中0是Sidekiq退出的等待秒数.

  • 这应该标记为正确的答案. (3认同)

ale*_*smn 24

所以在你找到proces_id后,使用下面的命令,这将阻止工人获得新的工作,他们将完成现有的工作.

kill -USR1 [PROCESS_ID]
Run Code Online (Sandbox Code Playgroud)

之后你可以杀了他们

kill -TERM [PROCESS_ID]
Run Code Online (Sandbox Code Playgroud)

此外,sidekiq/wiki上有一个关于此的页面,名为Signals.

[编辑]

是信号页面.

[编辑]

检查视频


Jon*_*yes 5

为了使守护程序保持运行,您在HardWorker类中肯定应该有一些好的错误处理,但是如果在系统进程中找不到sidekiq运行程序,也可以使用以下命令重新启动它们。

x=`ps aux | grep sidekiq | grep -v grep | awk '{print $2}'`; [ "$x" == "" ] && cd /path/to/deploy && bundle exec sidekiq -d -L /path/to/deploy/log/sidekiq.log -C /path/to/deploy/config/sidekiq.yml -e production
Run Code Online (Sandbox Code Playgroud)

这基本上是使用查找PID ps aux | grep sidekiq | grep -v grep | awk '{print $2}',然后将其存储在variable中x。然后,如果为空,它将运行守护进程sidekiq进程。

您可以让这个人从事某项日常工作。但是,如果您的工作持续失败,那么您肯定会想出原因。

编辑:添加了从cron部署的路径。