Node JS 中 Celery 的等价物
Equivalent of Celery in Node JS
请在 Node JS 中建议等效于 运行 异步任务的 Celery。
我已经能够搜索以下内容:
- (Later)
- 粿 (Kue),
- 咖啡味 (coffee-resque)
- 定时任务 (cron)
- 节点芹菜(node celery)
我在后台有 运行 手动和自动线程,并与 MongoDB 交互。
node-celery 使用的是 redis 数据库而不是 Mongo 数据库。有什么办法可以改变它吗?当我安装 node-celery 时,redis 被安装为依赖项。
我是芹菜新手,请guide.Thanks。
Edit-1/2018
我的建议是现在不要使用 Kue,因为它似乎是一个停滞的项目,请改用 Celery。它得到社区的良好支持和维护,并支持大量用例。
旧答案
选择 Kue,这是一个整体解决方案,在 Python 词中类似于 Celery;它具有以下概念:producers/consumers、延迟任务、任务重试、任务 TTL、跨多个收听同一队列的消费者轮询任务的能力等。
Celery 可能更先进,具有更多功能,支持更多经纪人,如果您愿意,您可以使用 celery-node,但是,在我看来,我认为不当您只能使用在 90% 的情况下足够的语言(当然除非必要)时,需要寻求需要安装 python 和节点的混合解决方案。
Celery 基本上是一个 RabbitMQ 客户端。有生产者(任务)、消费者(工人)和在任务和工人之间传递消息的 AMQP 消息代理。
了解这一点将使您能够 write your own celery in node.js。
这里的 node-celery 是一个库,它使您的节点进程既可以作为 celery 客户端 (Producer/Publisher) 也可以作为 celery worker (Consumer).
见https://abhishek-tiwari.com/post/amqp-rabbitmq-and-celery-a-visual-guide-for-dummies
根据我们的经验,Kue 不可靠,经常失业。当然,我们使用的是旧版本,此后可能已修复。那也是在 TJ 放弃该项目并且没有选择新的维护者的时期。我们切换到 beanstalkd 并且一直很开心。我们使用 https://github.com/ceejbot/fivebeans 作为 beanstalkd 的节点接口。
Go for Kue, it's a wholistic solution that resembles Celery in Python word; it has the concepts of: producers/consumers, delayed tasks, task retrial, task TTL, ability to round-robin tasks across multiple consumers listening to the same queue, etc.
Kue,过了这么多时间,仍然有同样的核心问题没有解决:
- github.com/Automattic/kue/issues/514
- github.com/Automattic/kue/issues/130
- github.com/Automattic/kue/issues/53
如果读到这篇文章的人不想重写 Kue,请不要从它开始。它适用于简单的任务。但是如果你想处理很多它们,并发或任务链(当一个任务创建另一个任务时) - 停止浪费你的时间。
我已经浪费了一个月的时间来调试 Kue,但仍然没有成功。最好的选择是将 Kue 更改为 Pubs/sub RabbitMQ 上的消息队列和 Rabbot(另一个 RabbitMQ 总结)。
就我个人而言,我并没有那么多地使用 Celery 来全力以赴,但是当我一直在寻找 Celery 的替代品并发现有人建议 Kue 时,我的血液沸腾了。
如果您想发送延迟的电子邮件 (as in Kue example),您可以随心所欲,而不必担心错误。但是如果你想要一个可靠的系统 task/message 队列,甚至不要从 Kue 开始。我个人会选择 5.node-celery(node celery)
也值得一提https://github.com/OptimalBits/bull。它是一个快速、可靠、基于 Redis 的队列,为稳定性和原子性而编写。
Bull 4 目前处于测试阶段,有一些不错的功能https://github.com/taskforcesh/bullmq
请在 Node JS 中建议等效于 运行 异步任务的 Celery。 我已经能够搜索以下内容:
- (Later)
- 粿 (Kue),
- 咖啡味 (coffee-resque)
- 定时任务 (cron)
- 节点芹菜(node celery)
我在后台有 运行 手动和自动线程,并与 MongoDB 交互。
node-celery 使用的是 redis 数据库而不是 Mongo 数据库。有什么办法可以改变它吗?当我安装 node-celery 时,redis 被安装为依赖项。
我是芹菜新手,请guide.Thanks。
Edit-1/2018
我的建议是现在不要使用 Kue,因为它似乎是一个停滞的项目,请改用 Celery。它得到社区的良好支持和维护,并支持大量用例。
旧答案
选择 Kue,这是一个整体解决方案,在 Python 词中类似于 Celery;它具有以下概念:producers/consumers、延迟任务、任务重试、任务 TTL、跨多个收听同一队列的消费者轮询任务的能力等。
Celery 可能更先进,具有更多功能,支持更多经纪人,如果您愿意,您可以使用 celery-node,但是,在我看来,我认为不当您只能使用在 90% 的情况下足够的语言(当然除非必要)时,需要寻求需要安装 python 和节点的混合解决方案。
Celery 基本上是一个 RabbitMQ 客户端。有生产者(任务)、消费者(工人)和在任务和工人之间传递消息的 AMQP 消息代理。
了解这一点将使您能够 write your own celery in node.js。
这里的 node-celery 是一个库,它使您的节点进程既可以作为 celery 客户端 (Producer/Publisher) 也可以作为 celery worker (Consumer).
见https://abhishek-tiwari.com/post/amqp-rabbitmq-and-celery-a-visual-guide-for-dummies
根据我们的经验,Kue 不可靠,经常失业。当然,我们使用的是旧版本,此后可能已修复。那也是在 TJ 放弃该项目并且没有选择新的维护者的时期。我们切换到 beanstalkd 并且一直很开心。我们使用 https://github.com/ceejbot/fivebeans 作为 beanstalkd 的节点接口。
Go for Kue, it's a wholistic solution that resembles Celery in Python word; it has the concepts of: producers/consumers, delayed tasks, task retrial, task TTL, ability to round-robin tasks across multiple consumers listening to the same queue, etc.
Kue,过了这么多时间,仍然有同样的核心问题没有解决:
- github.com/Automattic/kue/issues/514
- github.com/Automattic/kue/issues/130
- github.com/Automattic/kue/issues/53
如果读到这篇文章的人不想重写 Kue,请不要从它开始。它适用于简单的任务。但是如果你想处理很多它们,并发或任务链(当一个任务创建另一个任务时) - 停止浪费你的时间。
我已经浪费了一个月的时间来调试 Kue,但仍然没有成功。最好的选择是将 Kue 更改为 Pubs/sub RabbitMQ 上的消息队列和 Rabbot(另一个 RabbitMQ 总结)。
就我个人而言,我并没有那么多地使用 Celery 来全力以赴,但是当我一直在寻找 Celery 的替代品并发现有人建议 Kue 时,我的血液沸腾了。
如果您想发送延迟的电子邮件 (as in Kue example),您可以随心所欲,而不必担心错误。但是如果你想要一个可靠的系统 task/message 队列,甚至不要从 Kue 开始。我个人会选择 5.node-celery(node celery)
也值得一提https://github.com/OptimalBits/bull。它是一个快速、可靠、基于 Redis 的队列,为稳定性和原子性而编写。
Bull 4 目前处于测试阶段,有一些不错的功能https://github.com/taskforcesh/bullmq