Как выполнять другие периодические операции во время прослушивания потокового твиттера? - PullRequest
0 голосов
/ 26 января 2019

Я работаю над потоковым API для Twitter и получаю твиты, которые соответствуют моим критериям.

Но я хочу также выполнять определенные периодические операции каждую минуту, пока API работает в консоли.

Допустим, я хочу напечатать "Минуту прошло" во время работы потокового API. Как мне это сделать?

Вот мой код, который я пробовал.Но поскольку stream.filter работает, он не собирается в блок while.

import os

from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import logging
import time
import twitter_credentials
from logging.handlers import TimedRotatingFileHandler

logger = logging.getLogger("Rotating_log")
logger.setLevel(logging.INFO)
handler = TimedRotatingFileHandler(os.path.dirname(os.path.realpath(__file__))+'/logfile', when='m', interval=1, backupCount=4)
formatter = logging.Formatter('%(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)

class StdOutListener(StreamListener):

    def on_data(self, data):
        logger.info(data)
        print('added')
        return True

    def on_error(self, status):
        print(status)


if __name__ == "__main__":
    listener = StdOutListener()
    auth = OAuthHandler(twitter_credentials.CONSUMER_KEY, twitter_credentials.CONSUMER_SECRET)
    auth.set_access_token(twitter_credentials.ACCESS_TOKEN, twitter_credentials.ACCESS_TOKEN_SECRET)

    stream = Stream(auth, listener)

    stream.filter(track=['endgame', 'avengers', 'marvel'])
    os.chdir(os.path.dirname(os.path.realpath(__file__)))
    while True:
        time.sleep(60)
        print('Minute passed')

Как выполнить блок while без прерывания потокового API.Есть ли в tweepy методы StreamListener, которые я могу переопределить?

...