访问节点中长时间运行的进程的grpc流变量
Access grpc stream variable for long-running process in Node
我使用Node.js连接到使用gRPC执行长时间运行任务的服务器。
在作业进行期间,服务器向客户端(Node.js应用程序)发送单向流。我需要实现一个停止按钮,并被告知关闭gRPC流将停止正在进行的作业。
这是我目前的代码:
let express = require('express'),
router = express.Router(),
grpc = require('grpc'),
srv = grpc.load(__dirname + '/job_handler.proto').ns;
let startJob = (jobID, parameters) => srv.createJob(jobID, parameters);
router.post('/jobs', (req, res) => {
let lengthyOperation = startJob(jobID, parameters);
lengthyOperation.on('data', (data) => {
console.log(`Data from lengthy operation: ${data}`);
});
lengthyOperation.on('end', () =>
console.log('Lengthy operation completed');
});
res.setHeader('Location', `/jobs/${jobID}`);
res.status(202).send();
});
正如您所看到的,我在创建作业时向客户端发送一个HTTP202响应,它在后台异步地继续。
问题:
- 如何关闭溪流
- 如何访问
lengthyOperation
变量
lengthyOperation
对象有一个取消调用的cancel
方法。因此,当您想要停止流时,只需调用lengthyOperation.cancel()
即可。
请注意,执行此操作时,会导致调用以错误结束。我建议添加一个lengthyOperation.on('error', ...)
处理程序来处理该错误。
相关文章:
- 节点分叉子进程并获取它's错误
- 子进程未接收消息
- 我想放慢html中进程栏的速度
- 派生进程的stdout在管道传输时工作异常
- 定时Ajax进程在用户离开页面后继续
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 从已经运行的进程打开chrome扩展的背景页
- 用于本地主机上进程间通信的Javascript中的UDP
- AWS Lambda上的权限问题,可以't派生子进程
- PM2 在运行时更改集群进程大小
- 不同进程之间共享Node.js环境
- 链接CSS、Javascript和HTML进程失败
- 如何通过子进程连接Java应用程序后在node.js中编写文件
- Node.js使用派生两个子进程,然后两个子进程如何相互交换
- jar文件的后台进程,如何在进程结束时异步通知我
- Meteor - 如何同时运行多个服务器进程
- 节点.js子进程中的运行函数
- 是否可以从在Firefox或IE的网页中运行的Javascript启动Windows进程
- 通过进程使用 NodeJS 全局事件是个好主意吗?
- 访问节点中长时间运行的进程的grpc流变量