0

私は過去にこの問題に遭遇し、今までそれを回避することができました。アプリ エンジンで Twitch API を呼び出すと、エラー 400 が発生します。Google グループの twitch ページと、twitch tv の独自のフォーラムにアクセスしました。

Twitch TV や App Engine の多くの人と話をすることができましたが、運が悪かったので、この問題を解決できませんでした。私の質問を明確にすることを期待して、Twitch TV の API への URL 呼び出しを試みたときに何が起こっているかを直接再現する単純なアプリを作成することができました。

概要:

これは、アプリケーションのデプロイ時に失敗する単純なコードですが、localhost 環境では問題なく動作します。

import webapp2
import urllib2

class MainHandler(webapp2.RequestHandler):
    def get(self):
    url = ('https://api.twitch.tv/kraken/streams/nl_kripp')
        contents = urllib2.urlopen(url)
    self.response.out.write(contents.read())


app = webapp2.WSGIApplication([('/', MainHandler)],
                              debug=True)

以下は、この正確なアプリケーションが localhost で実行されたときに生成されるものです (これも想定どおりです)。

twitch.tv/kraken/channels/nl_kripp/features"},"成熟した":null,"video_banner":"http://static-cdn.jtvnw.net/jtv_user_pictures/nl_kripp-channel_offline_image-f3ad1124bc19cffd-640x360.png", "display_name":"nl_Kripp","status":"nolife Kripparrian -- GW2 Ranger Lvling. サーバー = Maguuma"},"preview":"http://static-cdn.jtvnw.net/previews/live_user_nl_kripp-630x473.jpg","partner":true},"_links":{"self":"https ://api.twitch.tv/kraken/streams/nl_kripp"}}

そして今、App Engine 環境でのまったく同じアプリケーション:

http://urltestingsite.appspot.com/

この問題は私のウェブサイトの主要なチェーン リンクであるため、この問題の解決にかなりの時間を費やしました。なぜこれが起こるのか、誰かが少しでも考えていますか?

編集 - これは私の実際のアプリケーションのコードです:

def check_if_live(self, b):
    url = ('https://api.twitch.tv/kraken/streams/%s' %b)
    url2 = urlfetch.fetch(url, headers = {'User-Agent': "suitegamer_User-Agent"}) 
    contents = urllib2.urlopen(url2)
    if (contents.read()).find('{"stream":null,') == 0:
        return 'Offline'
    else:
        return 'Live'

このコードは、次の AttributeError を返しています。

AttributeError: '_URLFetchResult' object has no attribute 'get_type'
4

2 に答える 2

2

このエラーは、レート制限に達したとき、またはアプリがアクセスを拒否されたときに返されることがあります。

このスレッドによると、実際に起こっている可能性があります。GAE は共有環境であるため、多くのユーザーが twitch.tv および/または justin.tv をクエリする可能性があるため、これらの制限に非常に頻繁に到達することは間違いありません (2 つの間で制限が共有されているかどうかはわかりません)。

また、この別のスレッドによると、API は GAE のプロダクション User-Agent が好きではありません (自分で試してみましたが、問題はまだ残っています)。

2 番目の問題の解決策は、User-Agent を設定することです ( Google App Engine UrlFetch サービスで User-Agent を変更する方法を参照してください) が、それでもおそらくレート制限に達します。

于 2012-08-27T06:59:16.640 に答える
0

自分の質問に答えるのはばかげていると思いますが、他の誰かがこの問題に遭遇した場合は、問題に光を当てることを願っています.

Twitch TV は現在、App Engine からのすべての呼び出しをブラックリストに登録しています。これは彼らの側の間違いだと確信していますが、とにかく、ow3d.tv の API を使用して同じアプリを試してみましたが、問題なく動作しました。おそらくそのうち修正されるでしょうが、修正されない場合でも、この問題を解決するために時間を無駄にしないでください! 乾杯!

于 2012-08-28T20:33:50.060 に答える