Запустить и забыть из облачных функций Google - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть две функции Google Cloud, FN1 и FN2.

Из FN1 я хочу запустить и забыть FN2. Это не ожидание ответа FN2 и прекращение выполнения FN1.

Приведет ли это к каким-либо утечкам ресурсов? Причина, по которой я спрашиваю, заключается в том, что я вижу ошибки в журналах FN1, когда FN2 завершается неудачно с ответом, отличным от HTTP 2xx, даже если FN1 успешно завершен с кодом HTTP 2xx.

1 Ответ

2 голосов
/ 22 апреля 2020

Из FN1 я хочу выстрелить и забыть FN2. Это не ожидание ответа FN2 и прекращение выполнения FN1.

Стандартный способ сделать это - использовать Cloud Pub / Sub-Trigred Cloud Cloud Function .

В FN1 вы публикуете sh сообщение для выделенного Pub / Sub topi c, например, следующим образом:

  const pubSubClient = new PubSub();
  const topicName = 'mytopic';

  const pubSubPayload = {   //If needed you can pass a message to FN2
        foo: "bar",
  }

  const dataBuffer = Buffer.from(JSON.stringify(pubSubPayload));
  await pubSubClient.topic(topicName).publish(dataBuffer);
  //terminate FN1, e.g. return null; or res.send();

Затем вы определяете FN2 следующим образом:

exports.fn2 = functions.pubsub.topic('mytopic').onPublish(async (message) => {

    const foo = message.json.foo;  //Get the value passed to FN2

});
...