繁体   English   中英

Cron在本地主机上工作,但在部署Appengine时不工作

[英]Cron works on local host but not when deployed Appengine

我在python中有一个cron作业,可以在我的localhost上运行,但是当它部署到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   

这在本地工作正常但在服务器上我收到以下错误:

'结果'Traceback(最近一次调用最后一次):文件“/ base / python_runtime / python_lib / versions / 1 / google / appengine / ext / webapp / init .py”,第515行,在call handler.get(* groups)文件中“/base/data/home/apps/hoosheer/4.347697940058059704/hoosheer_main.py”,第199行,in get result = json_response ['results'] KeyError:'results'

在我部署第二个版本之前,这确实有效。 有什么办法可以解决这个问题吗?

不返回JSON 'results'字段,因为Twitter允许的每Ip请求已达到可用请求的最大配额 ; 这解释了为什么从你的国内IP你没有任何问题,你没有得到HTTP 420响应代码。

不幸的是,Google App Engine使用共享的IP地址池*来处理传出的urlfetch请求,而Twitter搜索API不支持身份验证。

搜索API速率限制

对search.twitter.com上托管的Search API的请求不计入REST API限制。 但是,来自IP地址的所有请求都将应用于搜索速率限制。 搜索速率限制不会公开,以阻止不必要的搜索使用和滥用,但它高于REST速率限制。 我们认为搜索速率限制对于大多数应用程序来说既自由又充足,并且知道许多应用程序供应商已经发现它适合他们的需求。

这会迫使您认真思考Google App Engine是否适合您的应用程序。

*我在这里遇到了同样的问题但幸运的是,API的开发人员启用了一种身份验证机制,允许来自同一IP的经过身份验证的请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM