我想知道是否有办法实现后台任务,也许可以使用工作池。你能给我指明方向吗,我正在考虑为此编写软件包?

有帮助吗?

解决方案

2019年更新

在考虑为任何内容编写包之前,首先查看是否有现有的包可以满足您的需要。在 Meteor 世界中,这意味着在 Atmosphere 中查找“作业/队列/任务/工作人员管理/调度”包,然后在 npm 上查找相同的搜索词。您还需要更准确地定义您的需求:

  • 您想要持久性,还是内存中的解决方案有效?
  • 您希望能够将作业分配给不同的机器吗?

流星专用

  • 工作收集 - 可靠(我在 2014 年初创公司的生产中使用过它),但目前处于维护模式。允许您安排在任何地方(服务器、客户端)运行的持久作业。
  • 史蒂夫·乔布斯 - 由 Max Savin 积极维护,他是几部作品的作者 强大的 Meteor 工具
  • Littledata:synced-cron - “Meteor 的一个简单的 cron 系统。它支持在多个进程之间同步作业。”

废弃的包裹:

Npm 包

Meteor 已经能够直接使用 npm 包好几年了,所以这个问题相当于寻找 作业/工人/队列管理包 在 NPM 上。如果你不关心持久性:

  • 异步 “提供大约 70 种功能,其中包括常见的‘功能’嫌疑(map, reduce, filter, each...)以及异步控制流的一些常见模式(parallel, series, waterfall...)"
  • d3 队列 - 简约,由 D3 作者 Mike Bostock 撰写

如果您确实需要持久性,由于 Meteor 已经使用 MongoDB,因此使用具有 MongoDb 持久性的作业调度包可能会更有利。最强大和最受欢迎的似乎是 议程, ,但不幸的是它已经好几个月没有维护了,并且积压了大量 问题.

如果您愿意添加由以下支持的依赖项 雷迪斯 对您的项目来说,还有更多的选择:

和 MongoDB 一样,Redis 也可以提供高可用性(通过 Redis Sentinel),如果你想在多台工作机之间分配作业,你可以 将它们全部指向同一个 Redis 服务器.

其他提示

基于Cron作业存在包,可用于在某些间隔或日期上安排任务。以下是包: https://atmosphere.meteor.com/package/cron

如果您碰巧查看该软件包的来源,您将注意到他们只是使用:

Meteor.setInterval( ... , delay );

因此,如果您在数据库中保存任务,请在启动期间将它们加载到间隔,然后您可能在正确的轨道上。

如果您正在寻找特定于流星的东西,我很乐意分享有一个名为史蒂夫乔布斯的新包。它使运行后台作业简单地调用方法。

它具有您预期的所有标准功能,例如运行一次作业,重试失败的作业,等等。您可以在github上了解有关它的更多信息:

http://github.com/msavin/stevejobs

我猜恰当的支持是在他们的路线图上,但与此同时,我设法通过世代odicetagcode以忏悔方式。查看 cron-tick 包。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top