Twitter Search APIで受信したJSONが途切れる

8月16日にTwitter APIのバージョン1.1への変更予定がTwitterのブログでアナウンスされました。アナウンスによると、全てのAPIでOAuth認証が必要になるとのこと。そこで、以前にPython(2.7.1)で作ったTwitter Search APIを利用したTwitter検索スクリプトをOAuth認証に対応させることにしました。
OAuth認証に対応させて、これでまずは一安心と思いきや・・・以前にはなかったエラーが発生するようになってしまいました!

Twitter Search APIで受信したJSONをデコードしているところで

ValueError: Unterminated string starting at: line 1 column 14022 (char 14022)

のようなエラーがときどき発生するのです。

受信したJSONをログに出力してみると、なんとJSONのデータが途中で途切れていました。
そこで、次のようにヘッダーのContent-Lengthを参照して、Content-Length分のデータを読み込むように処理を修正してみました。

しかし、これでも同じエラーが発生してしまいます。
エラーが発生したときの受信データを眺めてみると、読み込んだ受信データのサイズに比べてContent-Lengthの方が大きいことが分かりました。
この情報を頼りにWEBを調べてみると、同様の事象がTwitter APIのIssue#437に取り上げられていました。どうやらTwitter API側の問題のようです。(2012/9/3現在、この問題は解決されていません。)2012/9/6にこの問題はCloseになりました。解決されたようです。(2012/9/7 追記)

上記のようなエラーが発生した場合は、スクリプト内での検索結果の取得をスキップし、もう一度検索するように対応しました。

さらりとまとめてみましたが、Issueにたどり着くまでに紆余曲折、色々手間取ってしまいました・・・。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*