我编写了一个异步函数,它可以快速响应http触发器,然后继续工作。
我遇到阻塞问题:看起来在res.status('200').send('Message')
被发送后,该功能会很快停止。
例如:
exports.functionName = function functionName (req, res) {
function_promise1(req)
.then(function(){
return function_promise2()
})
.then(function (response){
res.status(200).send('Triggered !');
function_promise3() //Won't be executed ! Or only for few ms.
})
.catch(function (e) {
console.error(e.message);
res.status(500).send(e.message);
})
};
Google功能在回复后是否真的停止了,或者我遗失了什么?
答案 0 :(得分:0)
一旦你打电话"发送",它就结束了。如果需要日志消息,则需要使用日志,而不是http响应。这不仅仅适用于云功能 - 这适用于所有http响应。
答案 1 :(得分:0)
我也面临这个问题。我的解决方案是: -创建两个api,一个是第一个api客户端调用,以便运行主要功能,该功能需要在发送响应后运行。第二个api是实际调用main函数的位置。
app.get("/voterefresh", async (req: any, res: any, next: any) => {
try {
fetch("");
return res.json({ message: "vote refresh script is started !" });
} catch (err) {
console.error(err);
return res.status(500).send({ err });
}
});
app.get("/script", async (req: any, res: any, next: any) => {
try {
await main();
return res.json({ message: "vote refresh script's done' !" });
} catch (err) {
console.error(err);
return res.status(500).send({ err });
}
});