node.js - 在 Node 中运行后台任务需要什么?

标签 node.js background-process kue

如果我的理解是正确的,处理后台任务是释放主线程 CPU 密集型任务的好方法。

我不明白的是 bull 或 kue 等系统使用什么来从主线程运行任务。

他们使用线程吗?它们是否需要整个 Node 进程分支?它们会生成子进程吗?

最佳答案

公牛基于Redis它在自己的进程中处理这些作业的数据处理和排​​队。 它是一个轻量级、健壮且快速的作业处理队列。它使用redis进行持久化,因此如果服务器因任何原因宕机,队列也不会丢失。

Job的内部实现可见here

Kue 模块也是如此,它是一个由 Redis 进程支持的优先级作业队列,为 Node.js 构建。后台任务由 Redis 提供支持。

这意味着这些模块依赖于 Redis 外部进程来启用不同的创建后台作业。

特定于作业的事件通过 Redis pubsub 在作业实例上触发:

  • 入队作业现已排队
  • promotion 作业从延迟状态提升为排队状态
  • progress 作业的进度,范围从 0-100
  • 尝试失败作业已失败,但仍有剩余尝试
  • 失败作业已失败并且没有剩余尝试
  • 完成作业已完成
  • 删除该职位已被删除

延迟的作业由 Redis 队列提供支持,该队列通知/触发模块中的回调。

关于node.js - 在 Node 中运行后台任务需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36588868/

相关文章:

node.js - 使用 Promises 的 "interval with timeout"有什么好的模式

Mysql,根据select的条件插入

node.js - 在node.js中如何在处理uncaughtException中的某些异常时重新启动服务器

ios4 - AudioQueueStart失败-12985

java - 为批量任务实现通用进度跟踪器

redis - 如何在不同端口的单个服务器上运行 redis?

jobs - 每个人都如何在解析服务器上实现计划作业/云作业?

node.js - 在 websocket 连接中设置 cookie

UWP 后台任务 - 应用程序触发器 - 当文件已存在时无法创建文件

node.js - Kue 的非活跃职位数量