基本認証を使用して Twitterストリーミング APIにフックし、 tweetstreamモジュールを利用する Python スクリプトがあります。
1分間に約10件のツイートを集めています。
断続的な切断が発生していたので、現在、切断の頻度を記録しています。
レート制限に達しており、420 HTTP エラーが発生しています。
検索 API の場合、OAuth 認証を使用するとより高いクォータが得られることはわかっています。ストリーミングについては、basic と OAuth の間のレート制限の違いに関する参照が見つかりませんでした。とにかく、私が使用している python Tweetstream は、ストリーミング API でこれをサポートしていないようです。
Ruby版のTweetstreamがOAuthに対応していることに気づきましたが、Pythonの学習体験としてこのプロジェクトをやっています。
Twitterのヘルプを読むと、「バックオフ戦略」について言及され、次のように言及されています。
HTTP 420 応答を受信した場合は、それ以上の接続試行を数分間停止することが不可欠です。
エラーが発生しなくなりましたが、これらのエラーが永続的に発生しないように、コードでより良いロジックを作成しようとしています。
私の現在の提案は以下のとおりです。これは、再接続を試みる前に 200 秒待機します。
while True:
try:
with tweetstream.FilterStream(uname, passwd, locations=extent) as stream:
# do stuff
except tweetstream.ConnectionError as e:
print e.message + " time: " + datetime.now
time.sleep(200)
pass
except tweetstream.AuthenticationError as e:
now = datetime.datetime.now()
print e.message + " time: " + str(now)
pass
私の質問は、これは Twitter から 420 エラーを受け取ることを回避する良い方法ですか? Twitter API に詳しい方にお勧めの方法を教えてください。