Puma 主进程退出回调

Puma main process on exit callback

如何在 Puma 主进程关闭之前执行 ruby 代码? 现在我正在优雅地关闭 Puma 的动作:

Process.kill("INT", Process.ppid)

当所有工作人员都停机时,我需要执行 ruby 代码。

at_exit do
  puts 'bye...'
end

会在每个进程退出后执行,我需要在所有worker退出后回调。

只是一个小技巧...

将全局常量添加到您的 config.ru(或设置)文件:

ROOT_PROCESS_ID = Process.pid

你可以这样做:

at_exit do
  if(Process.pid == ROOT_PROCESS_ID)
    puts 'bye...'
  end
end

这不是 Puma 特有的,因此即使您更换服务器(如果您曾经切换过),它也应该可以正常工作。