2016-10-25 4 views
0

TwitterのストリームAPIを使用してツイートを収集するためのPythonコードをいくつか実行しようとしました。私はpython-twitterパッケージと "getstreamsample()"メソッドを使用しています。私のコードは自分のラップトップでうまく動作しますが、クラウド(Ubuntu)で実行しようとすると、「getstreamsample()」メソッドはエラーメッセージなしでNoneを返すようです。私は "home_timeline()"のように、クラウド上で他の非ストリーミング方法を試してみましたが、うまくいきました。ストリーミングだけが動作していないようです。誰もこれについて何か考えているのですか?クラウド(ubuntu)のpython-twitterパッケージでGetStreamSampleメソッドを使用できません

私のコードは次の通りです:TwitterのストリーミングAPIは、10月の21日DYNへの攻撃以来の問題を経験してきた

#!/usr/bin/env python 
import twitter 
from pymongo import MongoClient 

#Setting up Twitter API 
api = twitter.Api(
consumer_key='Xxs...1Z8', 
consumer_secret='LMegmAgtD...jKiCf', 
access_token_key='2728....aEw1', 
access_token_secret='LLZ...9cJfN71', 
    sleep_on_rate_limit=True 
) 



def main(): 

    client = MongoClient('mongodb://xxx') 
    db = client.test 
    test=db.test  

    for line in api.GetStreamSample(stall_warnings=True): 
     if "text" in line: 
      if line['lang']=='en': 
       tweet={'created_at':line['created_at'], 
         'text':line['text'],       'coordinates':line['coordinates'],'_id':line['id_str']} 

       test.replace_one(tweet, tweet, True) 
       print (tweet) 


if __name__ == '__main__': 
    main() 
+0

このコードは一度動作しましたが、それ以降は動作しません。 –

答えて

0

(MongoDBの部分があまりにも正常に動作します)。これらはtwitter開発者フォーラムで報告されており、twitterスタッフは問題を認識しています:https://twittercommunity.com/t/issues-reported-with-streams-since-10-21/76429

問題の原因が何であるかについて明確な答えはありませんが、観察された振る舞いは、Twitterのストリーミングエンドポイントのいずれかへの接続が短時間(通常は必ずしもそうではありません)データを受信することなく。応答が送信されている間に接続が閉じられ、無効なJSONが返されることがあります。

RESTエンドポイントが正常に動作しているようです。

+0

こんにちは、お返事ありがとうございます。私はついに自分のコードが動作するようになった。私はそれがTwitterのストリーミングAPIの問題によるものかどうかはわかりません。ストリーミングコードは常に自分のラップトップで動作し、クラウド上で数回しか動作しませんでした。ストリーミングAPIには、これらの2つのIPアドレスに異なる制限があるようです。だから私はクラウド上で動作するコードを残しました。 –

関連する問題