Node.js 来自客户的Kue作业进度
我正在运行heroku应用程序,后台工作人员正在处理Kue的作业。因为heroku会终止并重新启动任何需要30秒以上时间的请求,所以我最终在Node.js 来自客户的Kue作业进度,node.js,heroku,redis,message-queue,kue,Node.js,Heroku,Redis,Message Queue,Kue,我正在运行heroku应用程序,后台工作人员正在处理Kue的作业。因为heroku会终止并重新启动任何需要30秒以上时间的请求,所以我最终在jobs.create()(完成之前)上向客户端发送了一个响应 由于其中一些工作需要几分钟才能完成,那么检查客户端进度的最佳方法是什么 到目前为止,我能看到的最佳解决方案是将作业id发送回客户端,然后每x秒检查一次作业进度: var job = jobs.create(type, data).save(function () { res.send(20
jobs.create()
(完成之前)上向客户端发送了一个响应
由于其中一些工作需要几分钟才能完成,那么检查客户端进度的最佳方法是什么
到目前为止,我能看到的最佳解决方案是将作业id发送回客户端,然后每x秒检查一次作业进度:
var job = jobs.create(type, data).save(function () {
res.send(200, job.id);
});
...
kue.Job.get(id, function (err, job) {
res.send({ progress: job._progress, state: job._state })
}
任何时候,当你有一项工作可能需要超过30秒才能完成时,你可能应该进行投票,而不是依赖一个很长的请求,以确保不会在某个地方被取消或破坏。轮询对刷新的客户也更具弹性(如果您的工作需要很长时间,则可能):
this.pollInterval = setInterval(poll.bind(this), 2000);