В настоящее время у меня возникли проблемы с получением примера кода для использования tweepy для доступа к Streaming API Twitter для правильной работы (ошибка... или, по крайней мере, как я ожидаю, что он будет работать) . Я использую недавний клон tweepy с GitHub (помеченный как версия 1.9) и Python 2.7.1.
Я попробовал пример кода из трех источников, в каждом случае используя «твиттер» в качестве тестового термина для отслеживания:
Код O'Rilley Answers: Как перехватывать твиты в режиме реального времени с помощью потоковой передачи Twitter API
Блог Эндрю Робинсона: Использование Tweepy для доступа к потоку Twitter
Репозиторий примеров Tweepy на GitHub (который, как это сделал Эндрю Робинсон, можно легко модифицировать для поддержки аутентификации OAuth): streamwatcher.py
Во всех трех случаях я получаю один и тот же результат: аутентификация прошла успешно, ошибок не возникает, и кажется, что основной цикл программы выполняется без каких-либо проблем. Я вижу, что использование сети подскакивает примерно до 200 КБ/с, а процесс python подскакивает почти до 100% использования ЦП, поэтому я думаю, что данные принимаются. Однако на консоль ничего не выводится.
Я подозреваю, что класс Stream tweepy по какой-то причине не вызывает пользовательский метод обратного вызова. Я пытался переписать методы обратного вызова в каждом примере, чтобы они производили вывод всякий раз, когда они вызываются, что, кажется, подтверждает это.Это очень простой фрагмент тестового кода, основанный на записи в блоге Эндрю Робинсона (конечно, с удаленными ключами моего приложения):
# -*- coding: utf-8 -*-
import tweepy
consumer_key = ''
consumer_secret = ''
access_token_key = ''
access_token_secret = ''
auth1 = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth1.set_access_token(access_token_key, access_token_secret)
class StreamListener(tweepy.StreamListener):
def on_status(self, tweet):
print 'Ran on_status'
def on_error(self, status_code):
print 'Error: ' + repr(status_code)
return False
def on_data(self, data):
print 'Ok, this is actually running'
l = StreamListener()
streamer = tweepy.Stream(auth=auth1, listener=l)
#setTerms = ['hello', 'goodbye', 'goodnight', 'good morning']
setTerms = ['twitter']
streamer.filter(track = setTerms)
Что я делаю неправильно?