我正在构建一个使用 RabbitMQ 的 sails 应用程序,将 Web 请求中的一些任务委托(delegate)给工作 Node 。这几乎就是 https://devcenter.heroku.com/articles/background-jobs-queueing 中描述的模式和 https://github.com/heroku-examples/node-articles-nlp .
虽然我可以在工作 Node 中执行 sails.lift(),但似乎最好跳过 http 端点 (express) 和一些 grunt 任务(bower/前端依赖项下载,更少,网络资源复制到.tmp, ...).
有什么办法可以实现吗?
谢谢!
编辑
我需要在我的 worker 中使用 sail,这样我就可以使用 waterline ORM 以及在 sail 中定义和公开的公共(public)服务。
最佳答案
如果你想在没有网络服务器和其他网络相关组件的情况下使用 Sails ORM,你可以使用 Sails Hooks 配置一个最小的应用程序
我写了一篇关于我如何得到 background tasks working with SailsJS and Kue 的完整博文,但这里是主要的 Hook 部分:
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)
})
})
关于node.js - 没有 http 端点的 Sails.js 工作 Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27371111/