没有http端点的Sails.js工作者节点

我正在构build一个使用RabbitMQ的sails应用程序,将Web请求中的一些任务委托给工作节点。 这几乎是https://devcenter.heroku.com/articles/background-jobs-queueing和https://github.com/heroku-examples/node-articles-nlp中描述的模式。

虽然我可以在worker节点中执行sails.lift(),但是似乎跳过http端点(express)和一些grunt任务(bower / frontend dependencies download,less,web资源复制到.tmp, …)。

有什么办法可以实现吗?

谢谢!

编辑

我需要在我的工作人员的帆,所以我可以使用水线ORM和定义和暴露在帆中的共同服务。

       

网上收集的解决方案 "没有http端点的Sails.js工作者节点"

如果您想在没有Web服务器和其他Web相关组件的情况下使用Sails ORM,则可以使用Sails Hooks来configuration最小的应用程序

我写了一篇完整的博客文章,介绍了如何使用SailsJS和Kue来完成后台任务 ,但是这里主要介绍一些部分:

require('sails').load({ hooks: { blueprints: false, controllers: false, cors: false, csrf: false, grunt: false, http: false, i18n: false, logger: false, //orm: leave default hook policies: false, pubsub: false, request: false, responses: false, //services: leave default hook, session: false, sockets: false, views: false } }, function(err, app){ //You can access all your SailsJS Models and Services here User.findOne(1).then(function(user){ console.log(user) }) }) 

在你的工作节点中使用sails.js会得到什么好处? Sails.js是一个Web框架,你不是在网上使用你的工作,至less不是直接的。 Sails.js不是你要找的。 在这种情况下,MVC不会让你受益,但你绝对可以从它的范例中获益。

我还没有使用RabbitMQ和node.js,我通常更喜欢redis作为消息代理。 我用kue做了类似的事情。 Kue真的是面向这种任务,你可以基本上定义工作,就像你在Express中定义一个路线一样。 所以你肯定可以做一个控制器来构build你的逻辑,但是Sails.js不是正确的工具。

如果你决定使用Sails.js只是因为它的发电机,你肯定可以用咕噜咕噜的声音把你的手弄脏。 不会很困难。 另一个概念是将您的工作人员集成到您的networking节点中,并且只限制每个工作人员上运行的作业数量。 Kue支持这个,我已经有了这个好运气,你只需要确保你没有进行大量的处理或者可能需要很长时间的处理,因为你可能会在这个networking节点上开始超时。