后台任务的 NodeJs Bull

问题描述 投票:0回答:2

我一直在使用 Bull 在我的节点应用程序中执行后台任务。

https://github.com/OptimalBits/bull

现在该节点本质上是单线程的。 bull 是使用运行节点应用程序的同一线程,还是分叉另一个线程并作为单独的实例运行?

node.js cron background cron-task background-task
2个回答
3
投票

来自大牛快速指南:

进程函数也可以在单独的进程中运行1。这有 几个优点:

  • 进程是沙盒的,所以如果它崩溃了,它不会影响 工人。
  • 您可以在不影响队列的情况下运行阻塞代码(作业 不会失速)。
  • 更好地利用多核 CPU。
  • 减少与 redis 的连接。

为了使用此功能,只需使用处理器创建一个单独的文件:

// processor.js
module.exports = function(job){
  // Do some heavy work

  return Promise.resolve(result);
}

像这样定义处理器:

// Single process:
queue.process('/path/to/my/processor.js');

// You can use concurrency as well:
queue.process(5, '/path/to/my/processor.js');

// and named processors:
queue.process('my processor', 5, '/path/to/my/processor.js');

1。这表明,bull 自然不会创建单独的执行过程。

基本指南:https://github.com/OptimalBits/bull#separate-processes


0
投票

不,它不会在工作线程中运行,而是在主线程中运行,因此建议不要在作业中使用阻塞代码。

© www.soinside.com 2019 - 2024. All rights reserved.