Выполнение задач параллельно с надежностью в облачных функциях - PullRequest
0 голосов
/ 07 мая 2020

Я транслирую и обрабатываю твиты в Firebase Cloud Functions с помощью Twitter API.

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

Вот как выглядит мой поток:

...
const stream = twitter.stream('statuses/filter', {track: [various, keywords, ..., ...], follow: [userId1, userId2, userId3, userId3, ..., ...]});

stream.on('tweet', (tweet) => {
   processTweet(tweet); //This takes time because there are multiple network requests involved and also sometimes recursively running functions depending on the tweets properties.
})
...

processTweet(tweet) по сути, компилирует потоки из твиттера, что требует времени в зависимости от длины потока. Иногда даже несколько секунд. Я максимально оптимизировал processTweet(tweet) для надежной компиляции потоков.

Я хочу запускать processTweet(tweet) параллельно и ставить в очередь твиты, поступающие во время обработки, чтобы они работали надежно, как twitter docs укажите.

Убедитесь, что ваш клиент читает поток достаточно быстро. Обычно вы не должны выполнять никакой реальной обработки при чтении потока. Прочтите поток и передайте активность другому потоку / процессу / хранилищу данных для асинхронной обработки.

Помощь будет очень признательна.

1 Ответ

1 голос
/ 07 мая 2020

Этот API потоковой передачи Twitter не будет работать с облачными функциями.

Код облачных функций может быть вызван только в ответ на входящие события, и код может работать не более 9 минут (по умолчанию 60 секунд) . После этого код функции будет принудительно отключен. Благодаря облачным функциям невозможно непрерывно обрабатывать некоторый поток данных, поступающих из API.

Чтобы использовать этот API, вам нужно будет использовать другой вычислительный продукт, который позволяет запускать код на неопределенный срок. экземпляр выделенного сервера, например App Engine или Compute Engine.

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