Я использую tweepy для доступа к API Twitter и прослушивания предоставляемого ими публичного потока , который должен составлять один процент от всех твитов. Вот мой пример кода, который я использую сам. Вы все еще можете использовать базовый механизм аутентификации для потоковой передачи, хотя они могут скоро измениться. Измените переменные USERNAME и PASSWORD соответствующим образом и убедитесь, что вы уважаете коды ошибок, которые возвращает Twitter (этот пример кода может не соответствовать механизму экспоненциального отката, который требуется Twitter в некоторых случаях).
import tweepy
import time
def log_error(msg):
timestamp = time.strftime('%Y%m%d:%H%M:%S')
sys.stderr.write("%s: %s\n" % (timestamp,msg))
class StreamWatcherListener(tweepy.StreamListener):
def on_status(self, status):
print status.text.encode('utf-8')
def on_error(self, status_code):
log_error("Status code: %s." % status_code)
time.sleep(3)
return True # keep stream alive
def on_timeout(self):
log_error("Timeout.")
def main():
auth = tweepy.BasicAuthHandler(USERNAME, PASSWORD)
listener = StreamWatcherListener()
stream = tweepy.Stream(auth, listener)
stream.sample()
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
break
except Exception,e:
log_error("Exception: %s" % str(e))
time.sleep(3)
Я также установил тайм-аут модуля сокета, думаю, у меня были некоторые проблемы с поведением тайм-аута по умолчанию в Python, поэтому будьте осторожны.
import socket
socket.setdefaulttimeout(timeout)