加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – App Engine – 难以访问Twitter数据 – Flask

发布时间:2020-12-20 13:23:01 所属栏目:Python 来源:网络整理
导读:我在使用Google App Engine从Twitter搜索API获取数据时遇到问题.在个人开发环境中工作我没有问题.我能够得到我想要的 JSON.但是,一旦代码部署到App Engine,我就会遇到HTTP 500错误代码. 我所遇到的唯一想法是,我缺少的开发和实时App Engine环境之间存在一些
我在使用Google App Engine从Twitter搜索API获取数据时遇到问题.在个人开发环境中工作我没有问题.我能够得到我想要的 JSON.但是,一旦代码部署到App Engine,我就会遇到HTTP 500错误代码.

我所遇到的唯一想法是,我缺少的开发和实时App Engine环境之间存在一些根本区别,并且/或者Twitter拒绝来自我正在运行的App Engine IP的请求.我写了一个小@ app.route来绝对验证是否有问题 – 现在是.

我很确定我没有达到速率限制,因为Twitter Search API没有明确的限制.我看到他们请求了一个用户代理,所以我一直在提供,但我仍然得到相同的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"}

我的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

解决方法

正如Calvin指出的那样,所有App Engine应用程序都从相同的IP池中获取出站HTTP请求,因此问题几乎肯定是速率限制:

从http://dev.twitter.com/pages/rate-limiting开始:

However,
all requests coming from an IP address
are applied to a Search Rate Limit.
The Search Rate Limit isn’t made
public to discourage unnecessary
search usage and abuse,but it is
higher than the REST Rate Limit. We
feel the Search Rate Limit is both
liberal and sufficient for most
applications and know that many
application vendors have found it
suitable for their needs.

他们还特别指出GAE没有资格进行白名单:

An application must have a static IP to be eligible for whitelisting. This means the majority of cloud platforms,including Google App Engine,cannot be whitelisted.

Twitter提出的限制速率限制的建议是切换到the Streaming API.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读