2016-08-13 8 views
0

TwythonでTwitter公開ストリームを聞いていますが、プロダクションサーバーは数日間ツイートを受信しなくなりました。TwitterストリーミングAPIはプロダクションでは応答しませんが、デベロッパーサーバーではOK

>>> from twython import TwythonStreamer 
>>> 
>>> class TestStreamer(TwythonStreamer): 
...  def on_success(self, data): 
...   print data 
... 
>>> stream = TestStreamer(KEY, SECRET, TOKEN, TOKEN_SECRET) 
>>> 
>>> stream.statuses.filter(track='clinton,trump') 

このスニペットは、開発サーバ上で実行されます:

私は簡単なテストケースを作成しました。つぶやきは即座に流れるようになります。プロダクションでは再びリスニングされているようですが、スローされたエラーはありませんが、つぶやきはありません。

私はそれがサーバー上でファイアウォールかもしれないと思った、またはサーバがTwitterの側にをブラックリストに載っている可能性があります。しかし、curlと同じトークンを使って、同じトークンセットを使用してコマンドを生成すると、コマンドはの開発サーバーと運用サーバーの両方で問題なく即座に受信を開始します。私は、このカールテストは、これらのファイアウォール、ブラックリスト、またはトークンの問題のオプションを排除すると思う。

あなたはどう思われますか?どんな助けでも大歓迎です。ありがとう。

答えて

0

これは、認証が期限切れのタイムスタンプの使用に失敗する原因となっAWS EC2サーバー上のサーバクロックドリフトであることが判明。また、Twythonで、例外を抑制して、もっと不明瞭にしました。

私はTwitterクライアントBirdyで「Unauthorized」という回答を得ました。それから私はthis postにやって来た。

私はクロック同期を行い、すべてが再び正常に戻っているので:

sudo ntpdate -s time.nist.gov 
1

問題とあなたのソリューションをより詳細に洞察力を与えるために、私は人々が必要とするTwitterの認証メカニズムは、OAuthのを使用していることに注意したいと思います要求ヘッダーの一部として提供されるクエリのDateTime(oauth_timestamp

Twitterがクエリを受信すると、oauth_timestampが古すぎないか無効でないことを確認します。彼らが完了したら、彼らはoauth_signatureを確認します。

ほとんどのライブラリは、現在のマシンのDateTimeを使用して、その要求を作成するために使用します。したがって、第三者ツールを使用してTwitter APIにアクセスする場合、マシンのDateTimeが正しく設定されていることを確認してください。

さらに高度なライブラリでは、DateTimeにアクセスするために呼び出される関数を指定できます。これは、ソフトウェアがDateTimeの有効性を保証できないマシンに配布されている場合に特に便利です。

私はこれが意味をなされることを望みます。

関連する問題