«Ошибка: не удалось обработать запрос» при отправке слишком большого ответа с помощью облачных функций Google - PullRequest
0 голосов
/ 03 мая 2018

Здесь немного контекста: в настоящее время мы используем Google Cloud Datastore для хранения различных типов записей в нашем приложении, и мы используем Google Cloud Functions для возврата всех записей отдельных типов. Мы делаем это через HTTP-запросы, так что это HTTP-триггер. Как раз прошлой ночью мы столкнулись с проблемой, когда, когда совокупный размер всех наших field записей типа был слишком велик, наша конечная точка внезапно потерпела неудачу с сообщением «Ошибка: не удалось обработать запрос».

Наша оболочка для этого довольно проста: наша конечная точка принимает тип типа в качестве параметра пути, запускает запрос к хранилищу данных с фильтром для всех записей такого рода, а затем использует res.send для отправки результатов запроса. .

Сначала казалось, что это, вероятно, проблема с размером транзакции, превышающим ограничения, предоставленные Google. Однако, когда я добавил больше журналов, я определил, что запрос надлежащим образом нашел все записи полей без инцидентов; однако по какой-то причине он сломался на последнем шаге res.status(200).send(resultsArr);.

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

Кто-нибудь сталкивался с чем-то подобным раньше? Кто-нибудь знает, что будет хорошим перспективным решением для этого? Я знаю, что мы можем сделать несколько вызовов к конечной точке с ограничениями, но меня беспокоит тот факт, что это вообще проблема. Попадание в ограничения размеров запросов - это одно, но я бы не ожидал, что сама res.send будет ограничивать нас здесь.

(Отредактировано: Да, ответ был более 10 МБ. Если вам нужна помощь, чтобы определить, если это ваша проблема, вы можете проверить, используя что-то вроде этого:

let size = Buffer.from(JSON.stringify(resultsArr)).length; console.log('Attempting to send response of size:', size);)

1 Ответ

0 голосов
/ 03 мая 2018

Ограничение для входящих и исходящих полезных нагрузок для триггера HTTP в настоящее время установлено в 10 МБ, как указано здесь .

...