2015-07-07 1 views
0

В настоящее время я пытаюсь собрать твиты с помощью tweepy. Я использую базовую программу примера, которая поставляется с tweepy, однако я модифицировал ее для записи в файл. Иногда моя программа работает 12 часов, а иногда и одна, но, похоже, случайно закрывается без сообщения об ошибке. Вот мой код:Tweepy похоже на случайное закрытие

from __future__ import absolute_import, print_function 

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


# Go to http://apps.twitter.com and create an app. 
# The consumer key and secret will be generated for you after 
consumer_key="" 
consumer_secret="" 

# After the step above, you will be redirected to your app's page. 
# Create an access token under the the "Your access token" section 
access_token="" 
access_token_secret="" 
f = open('filename.txt', 'w') 
class StdOutListener(StreamListener): 
    """ A listener handles tweets are the received from the stream. 
    This is a basic listener that just prints received tweets to stdout. 

    """ 
    def on_data(self, data): 
     print(data) 
     f.write(data) 
     return True 

    def on_error(self, status): 
     print(status) 

if __name__ == '__main__': 
    l = StdOutListener() 
    auth = OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 

    stream = Stream(auth, l) 
    stream.filter(track=['keyword']) 

Спасибо.

+0

возможно ли это есть: Тайм-аут»своего рода Где, если не твитов, не содержащих ваш' keyword'? получаются в X раз, когда программа завершается? – IanAuld

+0

Может быть, однако я обычно запускаю два из них одновременно с очень похожими ключевыми словами. Обычно закрывается, а другой обычно продолжается. – Joseph

+0

И нет ошибки или стека trace? – IanAuld

ответ

0

Используйте попытку, кроме блока, и ваша ошибка потока будет печататься в STDOUT. Вы можете поймать ошибку в блоке исключения и перезапустить скрипт или зарегистрировать ошибку.

try: 
    stream.filter(track=['keyword']) 
except Exception, e: 
    print "error: %s" % str(e) 
    # log error or restart script 

Мое предположение относительно того, почему это сбой происходит из-за схожести общей ошибки:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 4: ordinal not in range(128) 

 Смежные вопросы

  • Нет связанных вопросов^_^