Question

Je vais avoir des problèmes pour obtenir des données de l'API de recherche Twitter avec Google App Engine. Travailler dans l'environnement de développement personnel je n'ai pas de problème. Je suis en mesure d'obtenir le JSON que je veux. Cependant, une fois que le code est déployé pour App Engine, je rencontre un HTTP 500 Code d'erreur.

Les seules idées que je forme pour ce qui se passe est qu'il ya une différence fondamentale entre le dev et direct App Engine environnements que je suis absent et / ou que Twitter refuse les demandes de l'App Engine IP je suis en cours d'exécution de . J'ai écrit un petit @ app.route pour vérifier absolument qu'il ya des problèmes -. Est est inférieur à

Je suis assez sûr que je ne suis pas frapper une limite de vitesse parce que la recherche Twitter API n'a pas explicitement un. J'ai vu que ils ont demandé à un agent utilisateur, donc je l'ai dispensons cela, mais je reçois toujours la même erreur 500.

La version live de ce que je travaille ici: http: // 1 -alpha-3.rich90usa.appspot.com/twitter_test

Toute réflexion sur ce qui se passe mal ici serait grandement apprécié.

Section pertinente de 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

Où 'fetch_headers' est préalablement définies comme suit:

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

Haut de mon Flask py:

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
Était-ce utile?

La solution

Comme Calvin indiqué, toutes les sources App applications moteur sortant des requêtes HTTP du même pool d'adresses IP, de sorte que la question est le taux presque certainement limiter:

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

Cependant, toutes les demandes provenant d'une adresse IP sont appliqués à une recherche Taux limite. La recherche limite de débit ne se fait pas du public pour décourager inutiles la recherche et l'utilisation des abus, mais il est plus que le reste Taux limite. nous sentir le taux limite est à la fois la recherche libérale et suffisante pour la plupart applications et savoir que beaucoup fournisseurs d'applications ont trouvé adapté à leurs besoins.

Ils appellent également GAE spécifiquement comme étant inadmissibles à la liste blanche:

Une application doit avoir une adresse IP statique d'être admissible à la liste blanche. Cela signifie que la majorité des plates-formes de cloud computing, y compris Google App Engine, ne peuvent pas être dans la liste blanche.

La suggestion de Twitter pour contourner la limitation des taux est de passer à l'API streaming .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top