Kev*_* Lu 8 javascript signals node.js
我一直在阅读文档,但没有明确说明如果没有注册信号处理程序,Node.js 进程是否立即退出。例如,轮询队列中的待处理任务是执行还是所有内容都被删除?程序员是否总是必须通过跟踪所有待处理的承诺来显式处理优雅关闭?
当没有添加处理程序时SIGTERM,节点将重置终端并立即退出进程。这是一个“把所有东西都放在原来的地方”的出口。甚至比这process.exit仍然允许exit事件触发:
调用
process.exit()将强制进程尽快退出,即使仍有待处理的异步操作尚未完全完成,包括对 和 的 I/Oprocess.stdout操作process.stderr。
添加信号处理程序时 ( ) process.once('SIGTERM'),处理程序代码将被安排用于下一个事件循环。因此,即使您只是调用处理process.exit()程序,行为也会立即发生变化。
Promise 或一般的 Javascript 还没有内置取消的概念。您可以跟踪承诺,但除非使用底层 API 专门解决取消任务的方法,否则没有什么可做的。
不过你可以等一下。在一般的Web应用程序中,如果关闭Web服务器并关闭数据库连接。现有连接将完成,不会启动新连接,最终当事件循环上没有任何内容可运行时,该进程将自行退出。wtfnode可以很方便地帮助调试最终不会像这样退出的进程。
| 归档时间: |
|
| 查看次数: |
12884 次 |
| 最近记录: |