2016-11-18 86 views
0

脚本必须从api获取帖子并将其保存到数据库中。脚本只能在第一次运行时正常工作

运行成功运行的脚本后,即使在另一个5-24 +小时内有新的帖子,它也将无法获取新帖子。 它会在每秒钟的小部分时间内返回相同的旧响应,例如它从缓存或其他东西运行。 (如果我删除旧的帖子,它仍然将它们添加到数据库)

有趣的是,如果我部署相同的脚本,它第一次运行正常,然后再次,我必须等待另一个5- 24小时以上。

如果它运行成功,则需要3-10秒,否则需要不到一秒。

我真的很困惑,有没有像缓存响应?或者这可能是reddit api方面的问题?添加任何这些选项有帮助吗?

CURLOPT_RETURNTRANSFER => true, 
CURLOPT_CONNECTTIMEOUT => 100, 
CURLOPT_TIMEOUT => 100 

我目前使用的请求库要求

r = requests.get(url, headers = {'User-agent': 'My App 12345'}) 
response = r.json() 

这里是我的脚本的GAE部分

class MainHandler(webapp2.RequestHandler): 
def get(self): 
    # --------------- Database Connection --------------- 
    global db 
    global cursor 

    if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'): 
     db = MySQLdb.connect(xxx) 
    else: 
     db = MySQLdb.connect(xxx) 
    cursor = db.cursor() 
    # --------------------------------------------------- 
    fetchFromReddit("") # Start fetching script 

    self.response.write("Finished !") 

    db.close() 
    cursor.close() 

    app = webapp2.WSGIApplication([ 
     ('/url', MainHandler) 
    ], debug=True) 

回答

0

的AppEngine网址提取服务不appear缓存响应。正如通在这个google appengine group thread提到的,/禁用缓存,你需要把它添加到您请求头:

headers={'Cache-Control': 'no-cache,max-age=0', 'Pragma': 'no-cache'} 

哪里"max-age"是你想要的数据从缓存返回 是最古老的。