Pregunta

Tengo problemas para obtener datos de la API de búsqueda de Twitter con Google App Engine. Trabajando en el entorno de desarrollo personal no tengo problemas. Puedo obtener el JSON que quiero. Sin embargo, una vez que el código se implementa en App Engine, encuentro un código de error HTTP 500.

Las únicas ideas que tengo para lo que está sucediendo es que hay una diferencia fundamental entre los entornos de motor de desarrollo y en vivo que me falta y/o que Twitter está rechazando las solicitudes de la IP del motor de aplicaciones desde donde estoy corriendo. Escribí un pequeño @app.route para verificar absolutamente que hay problemas: está a continuación.

Estoy bastante seguro de que no estoy alcanzando un límite de tarifa porque la API de búsqueda de Twitter no tiene explícitamente uno. Vi que solicitaron un agente de usuario, así que he estado proporcionando eso, pero todavía recibo el mismo error de 500.

La versión en vivo de lo que estoy trabajando está aquí: http://1-alpha-3.rich90usa.appspot.com/twitter_test

Cualquier pensamiento sobre lo que va mal aquí sería muy apreciado.

Sección relevante 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

Donde 'fetch_headers' se define previamente como:

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

Superior de mi archivo frasco 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
¿Fue útil?

Solución

Como Calvin indicó, todas las aplicaciones de APP Engine Source Solicitudes HTTP de salida del mismo grupo de IP, por lo que el problema es casi seguro que es limitante de la velocidad:

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

Sin embargo, todas las solicitudes que provienen de una dirección IP se aplican a un límite de tasa de búsqueda. El límite de la tasa de búsqueda no se hace público para desalentar el uso y el abuso innecesarios de búsqueda, pero es más alto que el límite de la tasa de descanso. Creemos que el límite de la tasa de búsqueda es liberal y suficiente para la mayoría de las aplicaciones y sabemos que muchos proveedores de aplicaciones lo han encontrado adecuado para sus necesidades.

También llaman específicamente a GAE como inelegibles para la lista blanca:

Una aplicación debe tener una IP estática para ser elegible para la lista blanca. Esto significa que la mayoría de las plataformas en la nube, incluido el motor de aplicaciones de Google, no pueden ser blancas.

La sugerencia de Twitter de superar la limitación de la velocidad es cambiar a la API de transmisión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top