2016-02-22 3 views
1

Я стараюсь следовать example here, но я хочу больше одного слушателя. Как создать несколько прослушивателей без многопоточности?Python: как создать несколько прослушивателей без многопоточности?

from tweepy.streaming import StreamListener 
from tweepy import OAuthHandler 
from tweepy import Stream 

#Variables that contains the user credentials to access Twitter API 
access_token = "<...>" 
access_token_secret = "<...>" 
consumer_key = "<...>" 
consumer_secret = "<...>" 

#This is a basic listener that just prints received tweets to stdout. 
class StdOutListener(StreamListener): 

    def on_data(self, data): 
     print data 
     return True 

    def on_error(self, status): 
     print status 


if __name__ == '__main__': 

    #This handles Twitter authetification and the connection to Twitter Streaming API 
    l = StdOutListener() 
    auth = OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 
    stream = Stream(auth, l) 

    #This line filter Twitter Streams to capture data by the keywords: 'python', 'javascript', 'ruby' 
    stream.filter(track=['python', 'javascript', 'ruby']) 

    print "Control never seems to arrive here" 

    l = StdOutListener() 
    auth = OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 
    stream = Stream(auth, l) 

    #This line filter Twitter Streams to capture data by the keywords: 'python', 'javascript', 'ruby' 
    stream.filter(track=['django', 'angularjs', 'rails']) 

Stackoverflow хочет больше текста Stackoverflow хочет больше текста Stackoverflow хочет больше текста

ответ

0

я наткнулся на тот же вопрос здесь сам. Моим решением было запустить разные экземпляры сценария в рамках нового процесса командной строки. Если вы это сделаете, вам нужно будет сохранить каждую «версию» вашего скрипта в виде отдельного файла. Возможно, для этого есть гораздо лучшее решение, но это лучшее, что у меня есть сейчас.

Надеюсь, что это поможет хотя бы немного.

  • Az
+0

спасибо. Да, это должно быть даже возможно сделать это многопоточным способом, но мне интересно, почему у меня не может быть более одного слушателя. – Ivegotaquestion

+0

В данный момент я spitballing, но вы попробовали настроить несколько фильтров (уникальная переменная для каждого), а затем соответствующие слушатели (уникальная переменная каждая). – Cyb3rdude

0

Как отмечалось в Connections разделе streaming API documentation, Twitter позволяет только одно соединение с потоковым конечной точки. Слишком много попыток подключения может привести к их запрету на ваш IP-адрес.

+0

Спасибо, но давайте поговорим о проблеме слушателей, давайте оставим твиттер и их требования за пределами области на данный момент. – Ivegotaquestion

+0

Но Twitter автоматически отключит ваше первое соединение, если вы сделаете второй, который может быть частью вашей проблемы. – emma

+0

Нет, это работает, когда я делаю один прослушиватель для потока с несколькими потоками. – Ivegotaquestion