Frage

Ich habe Probleme, Daten von der Twitter -Such -API mit Google App Engine zu erhalten. Wenn ich in der persönlichen Entwicklungsumgebung arbeite, habe ich keine Probleme. Ich kann den JSON bekommen, den ich will. Sobald der Code jedoch in App Engine bereitgestellt wird, begegne ich einen HTTP 500 -Fehlercode.

Die einzigen Ideen, die ich für das habe, was vor sich geht, ist, dass es einen grundlegenden Unterschied zwischen den Entwicklungs- und Live -App -Engine -Umgebungen gibt, die ich fehlt und/oder dass Twitter Anfragen von der App Engine IP verweigert, von der ich ausgestattet bin. Ich habe eine kleine @App.Route geschrieben, um zu überprüfen, ob es Probleme gibt - ist unten.

Ich bin mir ziemlich sicher, dass ich keine Tarifbegrenzung mache, da die Twitter -Such -API nicht explizit eine hat. Ich habe gesehen, dass sie einen Benutzer-Agent angefordert haben, also habe ich das angegeben, aber ich bekomme immer noch den gleichen 500-Fehler.

Die Live -Version von dem, mit dem ich arbeite, ist hier: http://1-alpha-3.rich90usa.appspot.com/twitter_test

Alle Gedanken darüber, was hier schief geht, wären sehr geschätzt.

Relevanter Abschnitt aus Flask:

@app.route('/twitter_test')
def twitter_test():
  twitter_geo_url = 'http://search.twitter.com/search.json?callback=?&rpp=100&geocode=29.6516344,-82.3248262,3mi'
  twitter_result = urlfetch.fetch(twitter_geo_url, fetch_headers)
  if twitter_result.status_code == 200:
    return twitter_result.content

Wobei 'fetch_Headers' zuvor definiert ist als:

fetch_headers = {'User-Agent': "APPNAME-1-alpha-3"}

Spitzenreiter meiner Flask -PY -Datei:

from flask import Flask, request, render_template, session, redirect
import oauth2 as oauth
import simplejson as json
import urlparse
import urllib
import httplib
import time

from google.appengine.api import urlfetch
War es hilfreich?

Lösung

Wie Calvin angegeben hat, haben alle App -Engine -Apps HTTP -Anforderungen aus demselben IPS -Pool ausgehalten, sodass das Problem mit ziemlicher Sicherheit die Beschränkung der Bewertung:

Aus http://dev.twitter.com/pages/rate-limiting:

Alle Anfragen, die von einer IP -Adresse stammen, werden jedoch auf ein Suchrate -Limit angewendet. Die Suchrate -Grenze wird nicht öffentlich gemacht, um unnötige Suchnutzung und Missbrauch zu verhindern, ist jedoch höher als die Restrate -Grenze. Wir sind der Ansicht, dass die Suchrate -Grenze für die meisten Anwendungen sowohl liberal als auch ausreichend ist und wissen, dass viele Anwendungsanbieter sie für ihre Bedürfnisse geeignet empfunden haben.

Sie rufen auch GAE speziell als nicht für die Whitelisting förderfähig aus:

Eine Anwendung muss über eine statische IP verfügen, um die Whitelisting in Frage zu stellen. Dies bedeutet, dass die Mehrheit der Cloud -Plattformen, einschließlich der Google App Engine, nicht whitelistet werden kann.

Twitters Vorschlag, um rate zu umgehen Die Streaming -API.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top