如何*优雅地*重新启动Rails服务器?

问题描述

TL;DR:Rails-server 重启在 Action Cable 中没有正常处理,导致状态损坏。如何解决

我运行一个使用 Action Cable 的 Rails 服务器。

当我更改文件时,服务器会按预期重新启动。但它并没有完全优雅地重新启动。

Action Cable 连接在已建立的套接字中记录 {"type":"disconnect","reason":"server_restart","reconnect":true}。然后套接字似乎被切断,我的频道的 unsubscribed 方法没有运行。然而,在重新连接时,subscribed 方法确实运行——它应该运行,但现在我们有一个不对称。像跟踪连接的客户端数量这样简单的事情已经变得不可靠了,因为在服务器重新启动后,这个数字现在会翻倍,尽管真实数字保持不变。这是因为当调用 subscribed 时它会增加计数,但减少计数器发生在 unsubscribed 中,它不会在服务器重新启动时调用

如果这仅发生在开发中,这不会是一个大问题,但在生产中也会发生在由部署引起的服务器重启期间。

如何让 Rails 优雅地重启服务器,我的意思是它也应该在我的频道中运行 unsubscribed 方法,而不是仅仅切断连接?

编辑:我还向 Rails 提交了一个问题:https://github.com/rails/rails/issues/41005

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...