Domanda

Sto avendo problemi per ottenere i dati dalla ricerca API di Twitter con Google App Engine. Lavorare nell'ambiente di sviluppo personale non ho problemi. Sono in grado di ottenere il JSON che voglio. Tuttavia, una volta che il codice viene distribuito a App Engine, ho incontrato un HTTP 500 codice di errore.

Le uniche idee che ho per che cosa sta succedendo è che v'è una certa differenza fondamentale tra il dev e dal vivo ambienti App Engine che mi manca e / o che Twitter sta rifiutando le richieste del IP ho App Engine corro da . Ho scritto un piccolo @ app.route assolutamente verificare che ci sono problemi -. È è inferiore

Sono abbastanza sicuro che non sto colpendo un limite di velocità perché la Twitter Search API non ha esplicitamente uno. Io vidi che hanno chiesto un user-agent così mi è stato a condizione che, ma sto ancora ricevendo lo stesso errore 500.

La versione live di quello che sto lavorando è qui: http: // 1 -alpha-3.rich90usa.appspot.com/twitter_test

Ogni pensiero su cosa sta andando male qui sarebbe molto apprezzato.

relativa sezione da 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

dove 'fetch_headers' è stato definito dall'utente come:

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

Top del mio file py Flask:

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
È stato utile?

Soluzione

Come Calvin indicato, tutte le applicazioni App Engine sorgente in uscita HTTP richieste provenienti dallo stesso pool di indirizzi IP, in modo che il problema è quasi certamente Rate limiting:

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

Tuttavia, tutte le richieste provenienti da un indirizzo IP sono applicati ad un tasso Limite di ricerca. Il Search Limite di velocità non è fatta pubblico per scoraggiare inutili ricercare l'uso e l'abuso, ma è superiore rispetto al resto Limite di velocità. Noi sentire il tasso Limite di ricerca è al tempo stesso liberale e sufficiente per la maggior parte applicazioni e sapere che molti fornitori di applicazioni hanno trovato adatto per le loro esigenze.

Inoltre chiamano GAE specificamente ad essere ineleggibile per whitelist:

Una domanda deve avere un IP statico per poter beneficiare di whitelist. Ciò significa che la maggior parte delle piattaforme di cloud, tra cui Google App Engine, non possono essere whitelist.

Il suggerimento di Twitter per aggirare limita la velocità è quello di passare a l'API Streaming .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top