Отправка большого количества уведомлений приводит к ошибке избыточной памяти

#firebase #firebase-cloud-messaging #google-cloud-functions

#firebase #firebase-облако-обмен сообщениями #google-cloud-функции

Вопрос:

Я сохранил токены пользователей моего приложения в имени узла «токены».

В функциях firebase я создаю функцию, которая считывает все токены, которых более 5000, и отправляет уведомления каждому токену.

ie:

 return  admin.database().ref('root/tokens/').once('value')
                    .then(function(dataSnapshot){

                            dataSnapshot.forEach(function (snapshot) {

                                var token = snapshot.val(); 
                                admin.messaging().sendToDevice(token, payload, options );

                            }
  

Но я получаю сообщение об ошибке в журнале функций Firebase, в котором говорится:

введите описание изображения здесь

Что мне нужно для устранения этой ошибки? Нужно ли мне изменять свой код?

Ответ №1:

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

Чтобы изменить доступную память, ознакомьтесь с документацией по настройке времени ожидания и выделению памяти.


Не связано: рассмотрите возможность использования нового sendAll метода Firebase Admin SDK для уменьшения количества вызовов API, которые вам нужно выполнить. Это ускорит выполнение вашего кода и может немного уменьшить использование памяти.

Комментарии:

1. Функция sendAll также имеет ограничение только на 100 сообщений одновременно. Во всяком случае, я вообще отказался от этой опции.