我想知道,有没有办法实现后台任务?也许与工人池。你能告诉我的方向,我正在考虑写这个包?
uurity8g1#
在考虑写一个包之前,首先看看是否有现成的包可以满足你的需求。在Meteor的世界里,这意味着在Atmosphere上查找"job/queue/task/worker management/scheduling"包,然后在npm上查找相同的搜索词。你还需要更精确地定义你的需求:
Meteor能够直接使用npm包已经有好几年了,所以这个问题相当于在NPM上查找作业/工人/队列管理包。
map
reduce
filter
each
parallel
series
waterfall
如果您确实需要持久性,因为Meteor已经使用了MongoDB,使用一个持久性到MongoDb的作业调度包可能会很有利。最强大和流行的似乎是Agenda,但不幸的是它已经几个月没有维护了,而且它有一个issues的大量积压。如果您希望将redis支持的依赖项添加到项目中,还有更多选择:
和MongoDB一样,Redis也可以提供高可用性(通过Redis Sentinel),如果你想在多台工作机器上分发作业,你可以把它们都指向同一个Redis服务器。
zzzyeukh2#
有一个基于Cron作业的程序包,可用于在特定时间间隔或日期调度任务。https://atmosphere.meteor.com/package/cron如果您碰巧查看该软件包的源代码,您会注意到它们只是使用:Meteor.setInterval( ... , delay );因此,如果您将任务保存在数据库中,然后在启动时将它们加载到间隔中,那么您可能会走上正确的道路。
Meteor.setInterval( ... , delay );
7kqas0il3#
如果你正在寻找Meteor特有的东西,我很乐意分享一个新的软件包,叫做SteveJobs,它使得运行后台作业像调用一个方法一样简单。它拥有你所期望的所有标准特性,比如只运行一次作业,重试失败的作业等等,你可以在GitHub上了解更多:http://github.com/msavin/stevejobs
bpzcxfmw4#
我猜正确的支持是在他们的路线图上,但同时我已经设法通过setInterval以一种黑客的方式让它运行起来。
setInterval
4条答案
按热度按时间uurity8g1#
2019年更新
在考虑写一个包之前,首先看看是否有现成的包可以满足你的需求。在Meteor的世界里,这意味着在Atmosphere上查找"job/queue/task/worker management/scheduling"包,然后在npm上查找相同的搜索词。你还需要更精确地定义你的需求:
陨石特有
Npm程序包
Meteor能够直接使用npm包已经有好几年了,所以这个问题相当于在NPM上查找作业/工人/队列管理包。
map
、reduce
、filter
、each
...)以及一些异步控制流的常见模式(parallel
、series
、waterfall
...)"如果您确实需要持久性,因为Meteor已经使用了MongoDB,使用一个持久性到MongoDb的作业调度包可能会很有利。最强大和流行的似乎是Agenda,但不幸的是它已经几个月没有维护了,而且它有一个issues的大量积压。
如果您希望将redis支持的依赖项添加到项目中,还有更多选择:
和MongoDB一样,Redis也可以提供高可用性(通过Redis Sentinel),如果你想在多台工作机器上分发作业,你可以把它们都指向同一个Redis服务器。
zzzyeukh2#
有一个基于Cron作业的程序包,可用于在特定时间间隔或日期调度任务。https://atmosphere.meteor.com/package/cron
如果您碰巧查看该软件包的源代码,您会注意到它们只是使用:
Meteor.setInterval( ... , delay );
因此,如果您将任务保存在数据库中,然后在启动时将它们加载到间隔中,那么您可能会走上正确的道路。
7kqas0il3#
如果你正在寻找Meteor特有的东西,我很乐意分享一个新的软件包,叫做SteveJobs,它使得运行后台作业像调用一个方法一样简单。
它拥有你所期望的所有标准特性,比如只运行一次作业,重试失败的作业等等,你可以在GitHub上了解更多:
http://github.com/msavin/stevejobs
bpzcxfmw4#
我猜正确的支持是在他们的路线图上,但同时我已经设法通过
setInterval
以一种黑客的方式让它运行起来。