App Engine - Сложность доступа к данным Twitter - Flask - PullRequest
4 голосов
/ 28 апреля 2011

У меня проблемы с получением данных из API поиска в Твиттере с помощью Google App Engine.Работая в среде личного развития, у меня нет проблем.Я могу получить JSON, который я хочу.Однако после развертывания кода в App Engine я сталкиваюсь с кодом ошибки HTTP 500.

Единственные идеи, которые у меня есть, в том, что происходит, заключается в том, что есть некоторая принципиальная разница между средами dev и live App Engine, которые мне не хватает, и / или что Twitter отклоняет запросы от IP App Engine I 'Я бегу от.Я написал небольшой @ app.route, чтобы полностью убедиться, что есть проблемы - он ниже.

Я почти уверен, что не достигаю ограничения скорости, потому что в API поиска Twitter явно его нет,Я видел, что они запросили агента пользователя, поэтому я предоставляю это, но я все еще получаю ту же ошибку 500.

Живая версия того, с чем я работаю, находится здесь: http://1 -alpha-3.rich90usa.appspot.com / twitter_test

Будем весьма благодарны за любые мысли о том, что здесь происходит не так.

Соответствующий раздел из 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

Где 'fetch_headers' ранее был определен как:

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

Начало моего файла 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

1 Ответ

1 голос
/ 28 апреля 2011

Как указал Кальвин, все приложения App Engine исходящих HTTP-запросов исходят из одного и того же пула IP-адресов, поэтому проблема почти наверняка ограничивает скорость:

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

Тем не менее, все запросы, поступающие с IP-адреса применяются к пределу скорости поиска. Ограничение скорости поиска не установлено общественность, чтобы препятствовать ненужному использование поиска и злоупотребления, но это выше, чем REST Rate Limit. Мы чувствую, что ограничение скорости поиска либеральный и достаточный для большинства приложения и знают, что многие поставщики приложений нашли его подходит для своих нужд.

Они также называют GAE как не отвечающие требованиям для внесения в белый список:

Приложение должно иметь статический IP-адрес, чтобы иметь право на получение белого списка. Это означает, что большинство облачных платформ, включая Google App Engine, не могут быть включены в белый список.

Твиттер предлагает обойти ограничение скорости - переключиться на Streaming API .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...