Как подсчитываются вызовы Firebase Cloud Functions? - PullRequest
0 голосов
/ 20 апреля 2020

У меня в программе много функций с Firebase Cloud Functions. Но я не уверен, как рассчитываются вызовы. Я прошу об этом, чтобы я мог максимально минимизировать свои вызовы.

Чтобы начать, у меня есть функция:

export const fucntionOne = functions.auth.user().onCreate((user) => {
    console.log('1 invocation used!!') 
})

Когда новый пользователь присоединяется, эта функция будет выполнено и, конечно, это потребует мой 1 вызов.

Поэтому, прежде чем задавать вопрос здесь, я провел пару экспериментов и выяснил, что если я использую другую функцию functionTwo и вызываю ее в первой, например, так:

export const fucntionOne = functions.auth.user().onCreate((user) => {
        console.log('1 invocation used!!') 
        functionTwo()
    })

function functionTwo(){
    console.log('Second function worked. . .')
}

На этот раз я ожидал, что счетчик вызовов моей функции будет равен 2. Но он увеличился только на 1. Это нормально.

Но, скажем, я использую функцию с некоторым отношением с firebase-realtime-database, скажем, для сохранения или получения данные, использующие либо .onCreate() or .onDelete() и т. д., и вызов функции как:

export const fucntionOne = functions.auth.user().onCreate((user) => {
        console.log('1 invocation used!!')       
    })

export const functionOnCreate = functions.database
    .ref('/path')
    .onCreate((snapshot, context) => {

     //Do any thing in the function   
     console.log(`functionOnCreate executed.`)

     return <something>
   })

Теперь давайте проясним, functionOnCreate() выполняется, когда некоторые узлы создаются с использованием functionOne() в базе данных с использованием .onCreate() Метод.

НО, на этот раз это стоило мне 2 Вызовов. Хорошо, я понимаю, что это потому, что functionOnCreate() вызывается [или вызывается ] firebase функции, так что это может быть причиной этого.

Но если мне удастся выполнить задачи в базе данных, вручную вызвав функции, как functionTwo() сделал. Тогда это спасет меня от некоторых дополнительных вызовов функций?

1 Ответ

0 голосов
/ 20 апреля 2020
  • Вы платите за количество вызовов одной из ваших облачных функций. Во втором фрагменте кода у вас есть только одна облачная функция. Вызовы внутри этой облачной функции для других обычных JavaScript функций не являются платными операциями.
  • Вы платите за количество времени, в течение которого выполняется ваш код, и за память, выделенную в течение этого времени. Вызов нескольких обычных функций увеличит время выполнения кода и может увеличить требуемую память.
  • Выполнение дополнительных записей в базу данных в вашей запущенной облачной функции functions.auth.user().onCreate действительно предотвратит оплату для запущенного облака functions.database.ref('/path').onCreate(. Функция. Тем не менее, я рекомендую вам сделать некоторые расчеты количества вызовов, поскольку количество вызовов редко является основным фактором их стоимости.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...