アプリケーションがデプロイされたときにこのエラーが発生するようですが、localhost で提供されているときは発生しません。
E 2012-08-21 18:03:46.914 HTTP Error 400: Bad Request Traceback (most recent call last): File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py
E 2012-08-21 18:03:46.916 Traceback (most recent call last): File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 195, in Handle
このエラーを生成しているコードは次の場所にあります (巨大なハンドラーを許してください)。
class Dashboard(MainHandler):
def check_if_live(self,b):
url = ('http://api.justin.tv/api/stream/list.json?channel=%s' %b)
contents = urllib2.urlopen(url)
if contents.read() == '[]':
return 'Offline'
else:
return 'Live'
def get(self, profile_id):
u = User.by_name(profile_id.lower())
if not u:
self.redirect('/')
elif self.user.name != profile_id:
self.redirect('/profile/%s' %self.user.name)
elif self.user and profile_id:
current_user = self.user.name
name1 = ''
friend_name = ''
team_imagee = ''
key = ''
monthss = ''
yearss = ''
dayss = ''
countryss = ''
team_imagee2 = ''
imgs2 = ''
imgs = ''
key2 = ''
name22 = ''
name2 = ''
streamss = ''
streams_title = ''
imgs = db.GqlQuery("select * from Profile_Images WHERE name =:1", profile_id)
imgs2 = db.GqlQuery("select * from Profile_Images WHERE name =:1", current_user)
team_name = db.GqlQuery("select * from Teams WHERE name =:1", profile_id)
team_images = db.GqlQuery("select * from Teamimg WHERE user =:1", profile_id)
team_images2 = db.GqlQuery("select * from Teamimg WHERE user =:1", current_user)
friends = db.GqlQuery("select * from Friends WHERE name =:1 order by added_date desc limit 10", profile_id)
posts = db.GqlQuery("select * from Profile_Comments WHERE name_of_profile =:1 order by date_created desc", profile_id)
name2 = db.GqlQuery("select * from User WHERE name =:1", profile_id)
month = db.GqlQuery("select * from User WHERE name =:1", profile_id)
day = db.GqlQuery("select * from User WHERE name =:1", profile_id)
year = db.GqlQuery("select * from User WHERE name =:1", profile_id)
country = db.GqlQuery("select * from User WHERE name =:1", profile_id)
streams = db.GqlQuery("select * from Streams WHERE username =:1", current_user)
for stream_title in streams:
streams_title = stream_title.stream_title
for stream in streams:
streamss = stream.stream
for months in month:
monthss = months.month
for countrys in country:
countryss = countrys.country
for days in day:
dayss = days.day
for years in year:
yearss = years.year
for clan in team_name:
name1 = clan.team_name_anycase
for clan in team_name:
name2 = clan.team_name
for image in team_images:
team_imagee = image.key()
for image2 in team_images2:
team_imagee2 = image2.key()
for img in imgs:
key = img.key()
for img2 in imgs2:
key2 = img2.key()
streamm = (streamss[(streamss.find('.tv/')+ 4):])
check_if_life2 = self.check_if_live((streamss[(streamss.find('.tv/')+ 4):]))
self.render('dashboard.html', streams = streams, stream_title2 = streamm, stream_title = streams_title, check_if_life = check_if_life2, team_name2 = name2, imgs = imgs, team_img2 = team_imagee2, profile_image_posted = key2, posts = posts, profile_id = profile_id, country_var = countryss, day_var = dayss, year_var = yearss, month_var = monthss, current_user = current_user, friends = friends, team_img = team_imagee, team_name = name1, profile_image = key, username = self.user.name, email = self.user.email, firstname = self.user.first_name, last_name = self.user.last_name, country = self.user.country)
else:
self.redirect('/register')
これは具体的にそれを引き起こしているものです:
streamm = (streamss[(streamss.find('.tv/')+ 4):])
check_if_life2 = self.check_if_live((streamss[(streamss.find('.tv/')+ 4):]))
これは、上部にある関数「check_if_live」を利用します。完全なpython noobとして、私は一生、このエラーがローカルホストではなくライブで生成されている理由を理解できません。
編集:
私はまだAPIを動作させることができません。たとえばhttp://api.justin.tv/api/stream/list.json?channel=nasltvのように、アドレス バーで API を呼び出すと、うまく動作するのは興味深いことです。しかし、アプリエンジンに触れるとすぐに失敗します。この API にインデックスを付けるだけです。ああ!