Непостоянное время выполнения облачной функции Google, прочитанной из Firestore - PullRequest
0 голосов
/ 07 апреля 2020

Я написал простейшую облачную функцию Google, которая считала несколько документов из коллекции Firestore.

async function loadCodes()
{

  var errorCodes = [];
    let errorsRef = firestore.collection(ERROR_CODES_COLLECTION_NAME)
    .where("EntityNumber", "==", 7);
    try {
      await errorsRef.get()
      .then(qs => {
        qs.forEach(doc => {
          errorCodes.push(doc.data());
        });
      });


      return errorCodes;
    }
    catch (err) {

.... Я вызывал эту функцию много раз в течение нескольких минут. В большинстве случаев время выполнения составило около 60 мс, как и ожидалось. Но в 10-15% случаев это занимает 1,5 - 2 секунды.

Как это можно объяснить и можно ли этого избежать?

1 Ответ

0 голосов
/ 10 апреля 2020

Полагаю, дело в том, что loadCodes () является глобальной функцией. Получение документов из коллекции действительно занимает около одной секунды, но из-за этой глобальной функции Google сохраняет ее (со своим результатом) в кеше. Таким образом, в большинстве случаев loadCodes () фактически не вызывается, и время выполнения всей облачной функции короткое. Когда Google решает обновить sh среду, LoadCodes действительно выполняет свою работу, и это требует времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...