Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 来自客户的Kue作业进度_Node.js_Heroku_Redis_Message Queue_Kue - Fatal编程技术网

Node.js 来自客户的Kue作业进度

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

我正在运行heroku应用程序,后台工作人员正在处理Kue的作业。因为heroku会终止并重新启动任何需要30秒以上时间的请求,所以我最终在
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);