2

ユーザーの操作なしで、twython アプリケーションを長時間実行したままにできるようにしたいと考えています。それは単に私に向けられたつぶやきを出力するだけです。プログラムは動作していますが、しばらくすると次のエラーが発生します。

HTTPSConnectionPool(host='api.twitter.com', port=443): Max retries exceeded with url: /1.1/statuses/mentions_timeline.json?count=20&since_id=392227122070056960 (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)

ストリーミングではなく、REST API を使用しています。twython オブジェクトは次のように作成されます。

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

次に、次の方法でメンションを取得します。

mentions = twitter.get_mentions_timeline(count=20,since_id=sinceID)

コードは約 10 分ごとに再チェックし、最新の since_id を追跡して、新しいツイートのみを出力します。

質問:

1) エラーは twython エラーですか、それとも python ネットワーク ライブラリ エラーですか?

2) このエラーが発生した場合、プログラムを再起動せずに Twitter サーバーとの接続を再確立する正しい方法は何ですか? 最初に twython オブジェクトを破棄してから再作成し、サーバーで再認証する必要がありますか? twython のドキュメントでは、ストリーミング API を使用しているときに接続を閉じることについてのみ言及されています。

アドバイスをいただければ幸いです。

4

1 に答える 1

1

1) Twitter は API リクエストを抑制します。REST API のレート制限は、ストリーミング API よりもはるかに制限されています。各呼び出しの制限の非常に詳細なリストは次のとおりです: https://developer.twitter.com/en/docs/basics/rate-limiting

2) 接続を再確立する必要はありません。スロットリングの時間制限を超えるまで待つだけです (上記のリンクを確認してください)。制限に達しないようにリクエストの間隔を空けるか、データをキャッシュにローカルに保存して最後の有効なレスポンスを取得することができます。

于 2013-10-31T18:57:37.333 に答える