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

我在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
        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,它不应该有相同的问题:)