我想知道,有什么办法可以实现后台任务吗?
也许有工人池。你能给我指明方向吗,我正在考虑为此编写软件包?
2019年更新
在考虑为任何内容编写包之前,首先查看是否有现有的包可以满足您的需要。在 Meteor 世界中,这意味着在 Atmosphere 中查找“作业/队列/任务/工作人员管理/调度”包,然后在 npm 上查找相同的搜索词。您还需要更准确地定义您的需求:
- 您想要持久性,还是内存中的解决方案有效?
- 您希望能够将作业分配给不同的机器吗?
流星专用
-
工作收集- 可靠(我在 2014 年在初创公司的生产中使用过它),但目前处于维护模式。允许您安排在任何地方(服务器、客户端)运行的持久作业。
-
史蒂夫·乔布斯- 由 Max Savin 积极维护,他是几部作品的作者强大的 Meteor 工具
-
Littledata:synced-cron- “Meteor 的一个简单的 cron 系统。它支持在多个进程之间同步作业。”
废弃的包裹:
-
艺术井:队列- 优先级、调度、记录、重新排队。由 MongoDB 支持的队列。最后的代码提交:2015年-10月
- 超级基本的 cron 包:easycron。最后更新时间:2015 年 12 月。
-
差别:工人- 生成无头工作流流星进程来处理异步作业。最后的代码提交: 2015 年 1 月
-
cron (自2015年起)
-
电源队列- 被遗弃自2014年起。排队异步任务、限制资源使用、重试失败。支持子队列。无日程安排。没有测试,但是漂亮的演示。由于使用不适合长时间跑步递归调用.
Npm 包
Meteor 已经能够直接使用 npm 包好几年了,所以这个问题相当于寻找作业/工人/队列管理包在 NPM 上。如果你不关心持久性:
-
Async“提供大约 70 种功能,其中包括常见的‘功能’嫌疑(
map
, reduce
, filter
, each
...)以及异步控制流的一些常见模式(parallel
, series
, waterfall
...)"
-
d3-queue- 简约,由 D3 作者 Mike Bostock 撰写
如果您确实需要持久性,由于 Meteor 已经使用 MongoDB,因此使用具有 MongoDb 持久性的作业调度包可能会更有利。最强大和最受欢迎的似乎是Agenda,但不幸的是它已经好几个月没有维护了,并且积压了大量issues.
如果您愿意添加由以下支持的依赖项redis对您的项目来说,还有更多的选择:
-
bull- 功能最齐全的 Node 作业队列解决方案,由 Redis 支持
-
bee- 简单、快速、稳健。不患有Bull 表现出的内存泄漏
-
Kue- 节点的优先作业队列
和 MongoDB 一样,Redis 也可以提供高可用性(通过 Redis Sentinel),如果你想在多台工作机之间分配作业,你可以将它们全部指向同一个 Redis 服务器.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)