функция google вызывает другую функцию google: statusCodeError 500

У меня есть функция Google, которая вызывает API, работающий в другой функции Google. Обе функции находятся в NodeJS. Я использую request-promise-native для вызова второй функции.

Код выглядит следующим образом:

const rp = require('request-promise-native');
const URL = '....';

const callAPI = (param1, param2) => {
  return new Promise(resolve => {
    const url = URL;
    const data = {'param1': param1, 'param2':param2};
    const options = {
      method: 'POST',
      uri: url,
      body: data,
      json: true
    };
    rp(options)
      .then(result => {
        resolve(result);
      })
      .catch(err => {
        console.log('error in apicall:', err);
        resolve('');
      });
  });
};

callAPI('p1', 'p2')
.then(result => {
  ... do something
})
.catch(err => {
  ... handle error
});

Время от времени я получаю статусCodeError (который пойман в улове запроса-обещания), как показано ниже

{ StatusCodeError: 500 - "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<m ....

Нет согласованности в том, когда это происходит, но это происходит с некоторой частотой.


person RmR    schedule 01.05.2019    source источник
comment
Если другой код также является облачной функцией Google, я настоятельно рекомендую просто вызывать фактический код, а не проходить через инфраструктуру GCF (и нести двойную оплату).   -  person Frank van Puffelen    schedule 01.05.2019
comment
На каком тарифном плане работает ваш проект? Вы платите за этот проект?   -  person Doug Stevenson    schedule 01.05.2019
comment
@FrankvanPuffelen: что вы имеете в виду, просто вызывая фактический код?   -  person RmR    schedule 02.05.2019
comment
@Doug Stevenson: Проект находится в рамках обычного биллинга учетной записи Google, где я снимаю деньги (с кредитной карты) каждый месяц. И Firebase находится под планом Blaze. Я должен пояснить, что вызовы из одной функции в другую действительно работают. Просто однажды я получаю вышеуказанную ошибку   -  person RmR    schedule 02.05.2019
comment
См. мой ответ здесь: stackoverflow.com/questions/50340326/   -  person Frank van Puffelen    schedule 02.05.2019
comment
Спасибо @FrankvanPuffelen за ссылку. Будет ли метод, который вы предлагаете, работать в разных проектах? В моем случае функция 1 находится в клиентском проекте, а функция 2 (например, вызов API) в другом проекте.   -  person RmR    schedule 02.05.2019
comment
Этот подход не имеет ничего общего с инфраструктурой Cloud Functions, но полностью связан с повторным использованием кода. Если вы обеспечиваете код для функций (не GCF), которые хотите использовать в двух облачных функциях, не имеет значения, в каком проекте GCP они находятся.   -  person Frank van Puffelen    schedule 02.05.2019