通过 OS X shell 脚本执行 Wakanda 服务器彻底关闭的最佳实践是什么?
这将是当前加载和运行的解决方案。
即将发布的 1.1.0 版本的最佳实践:
- 处理
applicationWillStop
事件在service处理应用程序特定的关闭逻辑
-
service wakanda stop
对于 Ubuntu 和普通kill
对于 Mac 操作系统(kill -9
应该始终是某种超时后的最后手段,但这不再是必要的了)
当前版本 1.0.x 的最佳实践:
- 使用以下命令准备服务器停止
HTTP Request Handler
或其他方法(确保很好地保护这一点并仅接受来自本地主机的连接)
-
service wakanda stop
for Ubuntu and a normal kill
for Mac OS ( kill -9
should always be the last resort after some kind of timeout but this should not be necessary anymore)
更多细节 :
我们应该区分像 Apache 这样的 HTTP 服务器和像 Wakanda Server 这样的应用程序服务器。
例如,当您使用SharedWorker
在 Wakanda 中,您正在创建一个单独的线程来运行一些代码。假设工作人员正在进行某种关键数据操作。如果您让服务器为您关闭该工作线程,则可能会导致应用程序中的数据不一致。因此,您应该在服务器停止应用程序之前处理任何特定于业务逻辑的“干净”关闭。
从1.1.0版本开始,不再创建专门的HTTP Request Handler
您可以调用它来准备服务器的停止,您可以使用处理该事件的服务applicationWillStop
.
当服务器收到可阻止的终止信号(TERM、QUIT、INT)时,它将启动停止进程(以下适用于 Wakanda Digital App Factory 1.1.x 版本):
- 通知该事件的每个服务
applicationWillStop
- 通知该事件的每个服务
httpServerWillStop
- 等待所有服务代码执行完成 - 一次调用一个服务(服务器等待处理事件的代码结束执行,然后再调用下一个服务) -
- 拒绝任何新传入的 HTTP 请求
- 处理 HTTP Server 队列中的所有 HTTP 请求
- 要求所有执行 JS 代码的工作线程和线程停止执行(包括请求处理程序代码)。
- 检查是否有任何线程/JS 上下文仍然处于活动状态,如果是这种情况,则最多等待 5 秒。
- 服务器强制所有 JavaScript 上下文停止执行并
杀死所有剩余的线程
- 服务器等待线程关闭
- 服务器停止
在 1.1.0 之前的版本中,服务器会在通知服务关闭事件之前要求工作人员关闭。这就是为什么我们不能依靠服务来彻底关闭SharedWorkers
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)