我不清楚如何在PubSub主题上将Cloud Run用于中等运行任务(当然,在Cloud Run的时间限制内)。
让我们看看从教程[1]中摘录的示例:
app.post('/', (req, res) => {
if (!req.body) {
const msg = 'no Pub/Sub message received'
console.error(`error: ${msg}`)
res.status(400).send(`Bad Request: ${msg}`)
return
}
if (!req.body.message) {
const msg = 'invalid Pub/Sub message format'
console.error(`error: ${msg}`)
res.status(400).send(`Bad Request: ${msg}`)
return
}
const pubSubMessage = req.body.message
const name = pubSubMessage.data
? Buffer.from(pubSubMessage.data, 'base64').toString().trim()
: 'World'
console.log(`Hello ${name}!`)
res.status(204).send()
})
我的疑问是:任务完成后是否应该仅在 之后返回HTTP 204,否则任务会突然终止?
答案 0 :(得分:2)
我的疑问是:是否仅在任务完成后才返回HTTP 204, 否则任务会突然终止?
您别无选择。如果您在任务/目标完成之前返回,则CPU将被闲置为零,并且在Cloud Run实例中将不会发生任何事情。
在您的示例中,您只是在处理发布/订阅消息并提取名称。如果您在完成之前返回,将不会处理任何名称。
Cloud Run专为HTTP请求/响应系统而设计。这意味着处理从您收到HTTP请求(GET,POST,PUT等)开始,到代码返回HTTP响应(或仅返回无响应)时结束。您可以尝试创建后台线程,但是不能保证一旦您的主函数返回,它们就会执行。