Я работаю над потоковым 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, которые я могу переопределить?