Meteor的后台任务

我想知道,有没有办法实施后台,也许与工人池。 你能告诉我方向,我正在考虑为此编写软件包吗?

2017更新

现在Meteor可以直接使用npm包,这个问题就等于在npm上find后台任务pipe理包(例如Kue – Redis支持的Node.js的优先级作业队列),或者寻找Meteor特定的任务pipe理包,最可靠的是vsivsi:jobCollection ,它允许您安排持久作业在任何地方运行(服务器,客户端)。 我在2014年使用这个function来为财经新闻聚合器初创公司的RSS聚合提供动力。

目前(2017年)meteor特定的工作计划包包括maxsavin / SteveJobs 。

老答案

  • d3队列 – 由D3作者Mike Bostock编写的简约asynchronous(见下文)
  • peerlibrary:async – 用于Node.js和浏览器的stream行asynchronous包的meteor包装器 。 提供超过20个function(地图,缩小,每个,filter等),并支持强大的控制stream(串行,并行,瀑布等); 也请看这个例子 。 meteor1.3+应该变得不必要了 。
  • artwells:队列 – 优先级,调度,日志logging,重新排队。 队列由MongoDB支持。 最后更新:2015年11月
  • 超级基本的cron包: easycron 。 最后更新:2015年12月。
  • 差别:工人 – 产生无头工人meteor过程工作asynchronous工作

软件包我build议小心:

  • PowerQueue – 队列asynchronous任务,节制资源使用,重试失败。 支持子队列。 没有调度 。 没有testing,但漂亮的演示 。 由于使用recursion调用,不适合长时间运行。

避免:

  • percolatestudio:跨多个应用程序服务器分布的synced-cron -cron作业。 不再维护。
  • cron (警告: 很老 )

有一个基于Cron作业的软件包,可以用来安排某些时间间隔或date的任务。 这里是一个包: https : //atmosphere.meteor.com/package/cron

如果你碰巧看到这个包的来源,你会注意到他们只是简单地使用:

Meteor.setInterval( ... , delay );

因此,如果将任务保存到数据库中,那么在启动过程中将其加载到时间间隔中,那么您可能会走上正轨。

我猜测他们的路线图上有适当的支持,但是同时我已经设法通过setInterval以黑客方式进行。 请参阅cron-tick软件包。

如果你正在寻找特定于meteor的东西,我很高兴分享一个叫做史蒂夫·乔布斯的新软件包。 它使得运行后台工作与调用方法一样简单。

它具有您所期望的所有标准function,例如只运行一次作业,重试失败的作业等等。 您可以在GitHub上了解更多信息:

http://github.com/msavin/stevejobs