Значительная задержка между созданием и приемом твитов при потоковой передаче с использованием Tweepy - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь транслировать живые твиты со списком пользователей.Когда я тестировал код посредством потоковой передачи своей собственной учетной записи Twitter, я заметил значительную задержку ~ 5 секунд для получения стримером моего твита, тогда как уведомление в приложении Twitter происходит практически мгновенно.Является ли эта задержка неотъемлемым ограничением для API?

Мой код очень прост и просто печатает твит, когда его получает.

from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream   
import json
import credentials
import datetime as dt

class Authenticator():
    def authenticate_twitter_app(self):
        auth = OAuthHandler(credentials.CONSUMER_KEY, credentials.CONSUMER_SECRET)
        auth.set_access_token(credentials.ACCESS_TOKEN, credentials.ACCESS_TOKEN_SECRET)
        return auth


class TwitterStreamer():
    def __init__(self):
        self.auth = Authenticator().authenticate_twitter_app()

    def stream_tweets(self, users):
        listener = Listener(users)
        stream = Stream(self.auth, listener)
        stream.filter(follow=users)


class Listener(StreamListener):

    def __init__(self, users):
        self.users = users

    def on_data(self, data):
        try:
            print(dt.datetime.now())
            data = json.loads(data)
            print(data['created_at'])

        except Exception as e:
            print("Error:", e)

        return True

    def on_error(self, status):
        if status == 420:
            return False
        print(status)


users = ['nnnnnnnn']
twitter_streamer = TwitterStreamer()
twitter_streamer.stream_tweets(users)
...