@dnlup/fastify-traps

中文文档
3.1.0发布于 2024/11/29ISCTypeScriptCommonJS近 30 天下载 2.6万

在SIGINT和SIGTERM信号上优雅地关闭服务器的快取插件

中文使用文档
文档目录4 节
  1. 安装
  2. 使用量
  3. 插件选项
  4. 许可证

固定陷阱

npm version Tests codecov Known Vulnerabilities

在SIGINT和SIGTERM信号上优雅地关闭服务器的固接插件.

安装

$ npm i @dnlup/fastify-traps

使用量

默认

const fastify = require('fastify')()
const traps = require('@dnlup/fastify-traps')

fastify.register(traps)

fastify.get('/', (request, reply) => {
  reply.send({ ok: true })
})

fastify.listen(3000)

插件将使用实例日志打印一些信息, 如收到的信号 如果它能成功关闭固定实例.

自定义关闭超时

默认情况下,插件会等30秒服务器关闭. 之后,它会带着代码退出进程 1。 。 。 .

您可以更改超时值 .

const fastify = require('fastify')()
const traps = require('@dnlup/fastify-traps')

fastify.register(traps, {
  timeout: 1000 // wait 1 second before forcing exiting
})

fastify.listen(3000)

自定义钩子

插件允许注册自定义,同步函数来覆盖默认的钩子.

钩子的上下文与 fastify 实例,可以使用 this 以提及它.

const fastify = require('fastify')()
const traps = require('@dnlup/fastify-traps')

fastify.register(traps, {
  onSignal(signal) {
    this.log.debug(`Received signal ${signal}`)
  },
  onClose() {
    this.log.info('Server closed')
  },
  onTimeout(timeout) {
    this.log.error(`Forcing close after ${timeout} ms`)
  },
  onError(error) {
    this.log.error(`Uh oh: ${error.message}`)
  }
})

fastify.listen(3000)

插件选项

  • timeout <number>: 等待服务器关闭的毫秒数
  • onSignal <function>: 在信号自定义上 钩子
  • onClose <function>: 在信号自定义上 钩子
  • onTimeout <function>: 在信号自定义上 钩子
  • onError <function>: 在信号自定义上 钩子
  • strict <boolean>: 如果出现错误 SIGINT 或者说 SIGTERM 处理器已经注册 . 默认 : true。 。 。 .

如前所言 钩子上下文与 fastify 实例,可以使用 this 以提及它.

在符号( 符号) 上

  • signal <string>: 收到信号

插件收到时会叫这个钩子 SIGINT 或者说 SIGTERM 信号.

关闭( C)

插件会在服务器关闭时调用此钩子 .

超时( 超时)

  • timeout <number>: 超时的毫秒数

当等待服务器关闭的超时时, 插件会调用此钩子 .

错误( 错误)

  • error <Error|*>: 关闭服务器时出错

当关闭服务器时出错时, 插件会调用此钩头 .

许可证

公务员制度委员会

版本与发布记录

@dnlup/fastify-traps 共发布 11 个版本,首次发布于 2020/11/13;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.1.0latest2024/11/292 年前
3.0.22024/01/162 年前
3.0.12023/12/212 年前
3.0.02023/08/313 年前
2.0.02022/06/244 年前
1.2.02021/12/244 年前

其他发布通道:next → 1.2.0-1。

关于 @dnlup/fastify-traps 的常见问题

@dnlup/fastify-traps 是什么?

在SIGINT和SIGTERM信号上优雅地关闭服务器的快取插件

如何安装 @dnlup/fastify-traps?

在项目目录运行 npm install @dnlup/fastify-traps,或使用 pnpm add / yarn add / bun add。

@dnlup/fastify-traps 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dnlup/fastify-traps 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@dnlup/fastify-traps 可以商用吗?

@dnlup/fastify-traps 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dnlup/fastify-traps 的下载量有多少?

根据 npm 官方下载统计,@dnlup/fastify-traps 在 2026/10/13 – 2026/11/11 这 30 天内被下载 26,076 次,日均约 869 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dnlup/fastify-traps 还在维护吗?

最新版本 3.1.0 发布于 2024/11/29(2 年前);至今共发布 11 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/11/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。