如何在 Firebase cloudFunctions 的快速服务器中的 res.send() 之后执行代码
How to exec code after res.send() in express server at Firebase cloudFunctions
我正在使用云功能构建一个快速服务器,但我遇到了 res.send()
的问题。
在一个普通的快速服务器中,我可以在 res.send()
之后执行一些代码,但是在我的快速服务器上使用 Firebase cloudFunctions res.send()
关闭我的连接,之后我无法执行任何东西。
这是我需要做的:
在我的服务器中,我有一个端点可以从 Slack api 对话框接收一些数据,之后 Slack Api 正在等待空响应 res.send()
,所以我需要发送它。
但我还需要将该数据保存在我的数据库中,并在 slack 中向我的用户发送一条消息 "Your post was saved!"
那么我的端点是做什么的:
async function myEndpoint(req, res) {
await savePayload(req.payload);
await sendUserMessage(req.payload);
res.send('');
}
但有时 res.send()
需要很长时间才能启动 运行ning 并且我在 slack 上遇到错误,所以我想做类似的事情:
async function myEndpoint(req, res) {
res.send('');
await savePayload(req.payload);
await sendUserMessage(req.payload);
}
但正如我所说,在 res.send('')
之后,我的连接已关闭并且下一行没有 运行。你知道我该如何解决这个问题吗?
HTTP 函数在响应完成后立即终止执行——这是 Cloud Functions 的基本架构,因此没有办法绕过它。您将需要:
- 优化您的代码路径,以便始终在截止日期前发送空响应,或者
- 触发将异步完成工作的后台函数执行,然后响应。这可以通过例如写入 Cloud Firestore 或发送 Pub/Sub 消息
我正在使用云功能构建一个快速服务器,但我遇到了 res.send()
的问题。
在一个普通的快速服务器中,我可以在 res.send()
之后执行一些代码,但是在我的快速服务器上使用 Firebase cloudFunctions res.send()
关闭我的连接,之后我无法执行任何东西。
这是我需要做的:
在我的服务器中,我有一个端点可以从 Slack api 对话框接收一些数据,之后 Slack Api 正在等待空响应 res.send()
,所以我需要发送它。
但我还需要将该数据保存在我的数据库中,并在 slack 中向我的用户发送一条消息 "Your post was saved!"
那么我的端点是做什么的:
async function myEndpoint(req, res) {
await savePayload(req.payload);
await sendUserMessage(req.payload);
res.send('');
}
但有时 res.send()
需要很长时间才能启动 运行ning 并且我在 slack 上遇到错误,所以我想做类似的事情:
async function myEndpoint(req, res) {
res.send('');
await savePayload(req.payload);
await sendUserMessage(req.payload);
}
但正如我所说,在 res.send('')
之后,我的连接已关闭并且下一行没有 运行。你知道我该如何解决这个问题吗?
HTTP 函数在响应完成后立即终止执行——这是 Cloud Functions 的基本架构,因此没有办法绕过它。您将需要:
- 优化您的代码路径,以便始终在截止日期前发送空响应,或者
- 触发将异步完成工作的后台函数执行,然后响应。这可以通过例如写入 Cloud Firestore 或发送 Pub/Sub 消息