Python Cron在本地主机上工作,但在部署Appengine时不工作
我在python中有一个在本地主机上工作的cron作业,但是当它部署到appengine时,它就不再工作了Python Cron在本地主机上工作,但在部署Appengine时不工作,python,google-app-engine,cron,Python,Google App Engine,Cron,我在python中有一个在本地主机上工作的cron作业,但是当它部署到appengine时,它就不再工作了 pl = db.Query(Venue).order("id") list = pl.fetch(limit=0) for p in pl: base_url = 'http://search.twitter.com/search.json?rpp=100&q=4sq.com/' query = p.twitter_ID
pl = db.Query(Venue).order("id")
list = pl.fetch(limit=0)
for p in pl:
base_url = 'http://search.twitter.com/search.json?rpp=100&q=4sq.com/'
query = p.twitter_ID
url_string = base_url + query
json_text = fetch(url_string)
json_response = simplejson.loads(json_text.content)
result = json_response['results']
for f in result:
user = f['from_user']
print user
这在本地可以正常工作,但在服务器上出现以下错误:
“结果”回溯(最近的调用
最后):文件
“/base/python\u runtime/python\u lib/versions/1/google/appengine/ext/webapp/init.py”,
第515行,在呼叫中
handler.get(*groups)文件“/base/data/home/apps/hooscheer/4.347697940058059704/hooschere_main.py”,
第199行,输入get
result=json_响应['results']键错误:“results”
在我部署我的第二个版本之前,这确实有效。有什么办法可以解决这个问题吗?JSON
'results'
字段不会返回,因为Twitter允许的每Ip请求已达到可用请求的数量;这解释了为什么从你的国内IP你没有任何问题,你没有得到一个HTTP 420响应代码
不幸的是,Google App Engine将IP地址*共享池用于传出的urlfetch请求,并且不支持身份验证
搜索API速率限制
对搜索API的请求,托管在
search.twitter.com,不计算在内
接近剩余API限制。然而,
来自IP地址的所有请求
应用于搜索速率限制。
未设置搜索速率限制
公众劝阻不必要的
搜索的使用和滥用,但它是
高于剩余利率限制。我们
感觉搜索率限制是两者兼而有之
对大多数人来说是自由和足够的
应用和了解很多
应用程序供应商已经找到了它
适合他们的需要
这将迫使你认真思考Google App Engine是否适合你的应用程序
*我也遇到了同样的问题,但幸运的是API的开发人员启用了一种身份验证机制,允许来自同一IP的经过身份验证的请求。您需要检查从twitter得到的响应中有什么内容。我认为它没有“结果”字段,可能发生了一些错误(超过了一些twitter配额?)。将logging.info('JSON RESPONE:%s'%JSON_text')添加到您的代码中,并签入从twitter返回的应用程序日志。是的,Pawel击败了我。我敢打赌,Twitter只是将来自应用引擎的所有请求计算为一个用户,并说“你不需要了”。你可能被允许请求自己的登录,以获得一个隔离配额。谢谢你的帮助。我改为在GAE中使用Hunch,它不应该有相同的问题:)