gpt4 book ai didi

javascript - Node.js 在接收 SIGTERM 时的默认行为是什么?

转载 作者:行者123 更新时间:2023-12-04 03:42:40 25 4
gpt4 key购买 nike

我一直在阅读文档,但没有明确说明如果没有注册信号处理程序,Node.js 进程是否立即退出。例如,poll queue 中的待处理任务执行还是全部丢弃?程序员是否总是必须通过跟踪所有待处理的 Promise 来显式地处理正常关闭?

最佳答案

当没有为 SIGTERM 添加处理程序时, Node 将重置终端并立即退出进程。这是一个“把所有东西都放在原处”的导出。甚至比 process.exit which does still allow the exit event to fire :

Calling process.exit() will force the process to exit as quickly as possible even if there are still asynchronous operations pending that have not yet completed fully, including I/O operations to process.stdout and process.stderr.


添加信号处理程序( process.once('SIGTERM') 时,处理程序代码被安排用于下一个事件循环。因此,即使您只是在处理程序中调用 process.exit(),行为也会立即改变。
Promise 或一般的 Javascript 还没有内置取消的概念。您可以跟踪 promise ,但除非使用底层 API 专门解决取消任务的方法,否则没什么可做的。
您可以 just wait尽管。在一般的 Web 应用程序中,如果您关闭 Web 服务器并关闭数据库连接。现有连接将完成,不会启动新连接,最终当事件循环上没有任何东西可以运行时,进程将自行退出。 wtfnode 可以方便地帮助调试最终不会像这样退出的进程。

关于javascript - Node.js 在接收 SIGTERM 时的默认行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65677272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com