Использование tweepy для доступа к Streaming API Twitter

В настоящее время у меня возникли проблемы с получением примера кода для использования tweepy для доступа к Streaming API Twitter для правильной работы (ошибка... или, по крайней мере, как я ожидаю, что он будет работать) . Я использую недавний клон tweepy с GitHub (помеченный как версия 1.9) и Python 2.7.1.

Я попробовал пример кода из трех источников, в каждом случае используя «твиттер» в качестве тестового термина для отслеживания:

  1. Код O'Rilley Answers: Как перехватывать твиты в режиме реального времени с помощью потоковой передачи Twitter API

  2. Блог Эндрю Робинсона: Использование Tweepy для доступа к потоку Twitter

  3. Репозиторий примеров 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)

Что я делаю неправильно?

6
задан Morris Cornell-Morgan 10 June 2012 в 17:48
поделиться