在PubSub主题上使用Cloud Run

时间:2019-07-05 11:53:33

标签: google-cloud-pubsub google-cloud-run

我不清楚如何在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,否则任务会突然终止?

1-https://cloud.google.com/run/docs/tutorials/pubsub

1 个答案:

答案 0 :(得分:2)

  

我的疑问是:是否仅在任务完成后才返回HTTP 204,   否则任务会突然终止?

您别无选择。如果您在任务/目标完成之前返回,则CPU将被闲置为零,并且在Cloud Run实例中将不会发生任何事情。

在您的示例中,您只是在处理发布/订阅消息并提取名称。如果您在完成之前返回,将不会处理任何名称。

Cloud Run专为HTTP请求/响应系统而设计。这意味着处理从您收到HTTP请求(GET,POST,PUT等)开始,到代码返回HTTP响应(或仅返回无响应)时结束。您可以尝试创建后台线程,但是不能保证一旦您的主函数返回,它们就会执行。

相关问题