Я транслирую и обрабатываю твиты в 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 укажите.
Убедитесь, что ваш клиент читает поток достаточно быстро. Обычно вы не должны выполнять никакой реальной обработки при чтении потока. Прочтите поток и передайте активность другому потоку / процессу / хранилищу данных для асинхронной обработки.
Помощь будет очень признательна.