【发布时间】:2018-07-11 06:57:22
【问题描述】:
当节点中的某个函数崩溃时,它往往会导致整个应用程序崩溃。这可以通过pm2 等解决方案和/或为未捕获的异常设置全局侦听器来缓解。
这在 AppEngine 标准 NodeJS 中是如何处理的?如果发生未捕获的异常 - 它们是否会自动恢复(并记录) - 允许其他功能仍然能够运行,还是必须进行一些手动工作来处理这种情况?
【问题讨论】:
标签: javascript google-app-engine
当节点中的某个函数崩溃时,它往往会导致整个应用程序崩溃。这可以通过pm2 等解决方案和/或为未捕获的异常设置全局侦听器来缓解。
这在 AppEngine 标准 NodeJS 中是如何处理的?如果发生未捕获的异常 - 它们是否会自动恢复(并记录) - 允许其他功能仍然能够运行,还是必须进行一些手动工作来处理这种情况?
【问题讨论】:
标签: javascript google-app-engine
如果您的 Node.js 应用程序崩溃,AppEngine 将在其日志机制中记录其错误并重新启动。如果它一直崩溃,它会将应用程序标记为不健康:
Google App Engine Node.js Application Unhealthy
如果您不想依赖 AppEngine,您可以随时将此代码 sn-p 添加到您的所有 Node.js 应用程序中:
const someFn = // do something to handle exceptions
process.on("unhandledRejection", someFn );
虽然我不建议这样做。
就我个人而言,我更喜欢将我的机器放在 Google Cloud 中(没有 AppEngine),并为我准备一个服务器,在那里我可以拥有 PM2 并可以按照自己的意愿对其进行调整,但如果您投资了 AppEngine,这是你能做的最好的。
您需要记住的另一件事是,即使 GAE 记录错误,您确实有日志限制,所以如果您的应用程序一直在崩溃,您最终会遇到它。
另外,在你的代码中使用 Monads(咳咳 Sanctuary / Folktale)也有帮助:P
【讨论】: