sql >> データベース >  >> NoSQL >> MongoDB

Tweepyでツイートを取得中にエラーが発生しました

    このIncompleteRead エラーは通常、着信ツイートの消費量が遅れ始めたときに発生する傾向があります 、追跡する用語の長いリストを考えると、これはあなたの場合には理にかなっています。ほとんどの人が(私自身も含めて)採用していると思われる一般的なアプローチは、単にこのエラーを抑制してコレクションを続行することです(上記のリンクを参照)。

    IncompleteReadかどうかを完全に思い出せません 接続を閉じます(私の個人的なソリューションが私のストリームを再接続するため、そうなる可能性があります)が、次のようなものを検討することができます(私はそれをウィングするだけです、おそらくあなたの状況に合わせてやり直す必要があります> ):

    # from httplib import IncompleteRead # Python 2
    from http.client import IncompleteRead # Python 3
    ...
    while True:
        try:
            # Connect/reconnect the stream
            stream = Stream(auth, listener)
            # DON'T run this approach async or you'll just create a ton of streams!
            stream.filter(terms)
        except IncompleteRead:
            # Oh well, reconnect and keep trucking
            continue
        except KeyboardInterrupt:
            # Or however you want to exit this loop
            stream.disconnect()
            break
    ...
    

    繰り返しになりますが、私はただそこにそれを羽ばたかせていますが、話の教訓は、ここで採用されている一般的なアプローチは、エラーを抑制して続行することです。

    編集(2016年10月11日): 非常に大量のツイートを処理する人にとっては便利な情報です。このケースをなしで処理する1つの方法です。 接続時間またはツイートを失うと、受信したツイートをキューイングソリューション(RabbitMQ、Kafkaなど)にドロップして、 fromを読み取るアプリケーションによって取り込み/処理されるようになります。 そのキュー。

    これにより、ボトルネックがTwitter APIからキューに移動し、データの消費を問題なく待つことができます。

    これは「本番」ソフトウェアソリューションであるため、ツイートを失ったり再接続したりする必要がない場合でも、上記のソリューションは完全に有効です。



    1. db.createCollectionは関数ではありません

    2. 明確な基準で最後のドキュメントを取得する

    3. マングース:アルファベット順に並べ替える

    4. MongoDBテキストインデックスのステミングが正しく機能しない