gpt4 book ai didi

javascript - 访问 Node 中长时间运行的进程的 grpc 流变量

转载 作者:行者123 更新时间:2023-11-30 16:26:26 25 4
gpt4 key购买 nike

我正在使用 Node.js 连接到使用 gRPC 的服务器执行长时间运行的任务。

服务器在作业进行时向客户端(Node.js 应用程序)发送单向流。我需要实现一个停止按钮,并被告知关闭 gRPC stream将停止正在进行的工作。

这是我目前的代码:

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();
});

如您所见,我发送了一个 HTTP 202创建作业时响应客户端,并在后台异步继续。

问题:

  1. 如何关闭流?
  2. 如何访问 lengthyOperation 变量来执行此操作?

最佳答案

lengthyOperation 对象有一个取消调用的cancel 方法。因此,当您想要停止流时,只需调用 lengthyOperation.cancel()

请注意,当您这样做时,会导致调用以错误结束。我建议添加一个 lengthyOperation.on('error', ...) 处理程序来处理该错误。

关于javascript - 访问 Node 中长时间运行的进程的 grpc 流变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34083490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com