我正在运行一个使用 eventmachine 的守护进程。即使我重新部署我的代码,它也必须有 100% 的正常运行时间。所以我正在寻找零停机部署。
有没有办法让 EventMachine 重新加载代码而不会丢失连接?我想ConnectionHandler
在一个单独的文件中定义我的,然后重新加载它SIGHUP
:
Signal.trap("HUP") do
load "#{path}/connection_handler.rb"
end
但这有缺点:
- 它不会重新加载 EventMachine 本身(在 gem 更新的情况下需要)
- 我不知道这是否有效。
有什么建议吗?