24

请在 Node JS 中建议一个等效的 Celery 来运行异步任务。我已经能够搜索以下内容:

  1. 稍后
  2. 粑(),
  3. 咖啡-resque (咖啡-resque )
  4. 定时(定时
  5. 节点芹菜(节点芹菜

我在后台运行手动和自动线程并与 MongoDB 交互。

node-celery 使用的是 redis DB 而不是 Mongo DB。有什么办法可以改变吗?当我安装 node-celery 时,redis 被安装为依赖项。

我是芹菜新手,请指导。谢谢。

4

5 回答 5

17

Celery 基本上是一个 RabbitMQ 客户端。有生产者(任务)、消费者(工作者)和在任务和工作者之间传递消息的 AMQP 消息代理。

知道这将使您能够在 node.js 中编写自己的 celery

在此处输入图像描述

这里的 node-celery 是一个库,它使您的节点进程能够同时作为 celery 客户端(生产者/发布者)和celery 工作者(消费者)工作

https://abhishek-tiwari.com/post/amqp-rabbitmq-and-celery-a-visual-guide-for-dummies

于 2016-10-11T23:41:11.407 回答
7

Go for Kue,它是一个类似于 Python 中的 Celery 的整体解决方案;它具有以下概念:生产者/消费者、延迟任务、任务重试、任务 TTL、跨多个消费者轮询任务的能力,这些消费者侦听同一个队列等。

可能 Celery 更先进,具有更多功能,支持更多代理,如果你愿意,你可以使用node-celery,但是,在我看来,我认为没有必要去寻求需要安装 python 和 node 的混合解决方案。仅使用在 90% 的情况下足够的语言(当然除非必要)。

–––––––––––––––––––––––––––––––––––––––––––––––––––––––</p>

编辑-1/2018

我的建议是现在不要使用 Kue,因为它似乎是一个停滞的项目,而是使用 Celery。它得到了社区的良好支持和维护,并支持大量用例。

于 2015-08-13T13:04:29.233 回答
6

还值得一提的是https://github.com/OptimalBits/bull。它是一个快速、可靠、基于 Redis 的队列,为稳定性和原子性而编写。

Bull 4 目前处于测试阶段,并具有一些不错的功能https://github.com/taskforcesh/bullmq

于 2020-01-15T04:57:49.580 回答
5

Go for Kue,这是一个类似于 Python 中的 Celery 的整体解决方案;它具有以下概念:生产者/消费者、延迟任务、任务重试、任务 TTL、跨多个消费者轮询任务的能力,这些消费者侦听同一个队列等。

Kue,经过这么长时间过去了,仍然有同样的老核心问题没有解决:

  • github.com/Automattic/kue/issues/514
  • github.com/Automattic/kue/issues/130
  • github.com/Automattic/kue/issues/53

如果有人阅读本文不想重写 Kue,请不要从它开始。它适用于简单的任务。但是,如果您想处理其中的很多、并发或任务链(当一个任务创建另一个任务时),请停止浪费您的时间

我浪费了一个月的时间尝试调试 Kue,但仍然没有成功。最好的选择是更改 RabbitMQ 和Rabbot上的 Pubs/sub 消息队列的 Kue (另一个 RabbitMQ 总结)。

就个人而言,我并没有使用 Celery 来全力以赴,但是当我一直在寻找 Celery 替代品时,发现有人建议 Kue 只是让我的血液沸腾。

如果您想发送延迟的电子邮件(如 Kue 示例),您可以随心所欲,而不必担心错误。但是如果你想要一个可靠的系统任务/消息队列,甚至不要从 Kue 开始。我个人会选择 5. node-celery(node celery)

于 2017-06-28T08:32:17.493 回答
1

根据我们的经验,Kue 不可靠,失去了工作。当然,我们使用的是旧版本,它可能已经修复了。那也是在 TJ 放弃该项目并且没有选择新的维护者的时期。我们切换到 beanstalkd 并且非常高兴。我们使用https://github.com/ceejbot/fivebeans作为 beanstalkd 的节点接口。

于 2017-03-24T03:18:20.187 回答