Firebase HTTP Cloud Function - 500 Ошибка сервера, попробуйте еще раз - PullRequest
3 голосов
/ 01 апреля 2020

У меня есть HTTP-функция, выполняемая несколько раз в секунду (точной статистики у меня нет).

Иногда запрос возвращает данные, как предполагалось, а иногда возвращает текст ошибки:

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>500 Server Error</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Server Error</h1>
<h2>The server encountered an error and could not complete your request.<p>Please try again in 30 seconds.</h2>
<h2></h2>
</body></html>

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

Теперь я мог представить, что это ошибка в моем коде, но я использую промежуточное ПО, чтобы перехватить все ошибки и ответить как JSON!

Вот моя экспортированная облачная функция:

const app = express();
app.use(cors({origin: true, credentials: true})); // Allow cross-origin requests
app.get('/', this.reportRequest.bind(this));
app.use(errorMiddleware); // Handle errors

export const report = functions.https.onRequest(app);

А вот errorMiddleware:

export const errorMiddleware: ErrorRequestHandler = async (e, req, res, next) => {
  const executionId = req.header('function-execution-id');

  const message = 'message' in e ? e.message : e;

  const code = e.code && e.code > 200 && e.code < 600 ? e.code : 500;
  res.status(code).json({message, executionId});

  next();
};

1 Ответ

1 голос
/ 08 апреля 2020

Пожалуйста, отметьте здесь и пометьте его, чтобы получать обновления о состоянии этой проблемы.

Некоторые люди соглашаются с вами в том, что ошибка происходит где-то в промежуточном программном обеспечении еще до того, как оно попадает в функцию, а другие считают, что запросы, по-видимому, сбалансированы по нагрузке для экземпляров, прежде чем они смогут ответить.

Обходной путь должен заключаться в реализации экспоненциального отката, который идентифицирует это сообщение об ошибке и повторяет попытки после более длительных задержек.

В настоящее время нет исправления для исправления.

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