2016-11-18 135 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"是你想要的數據從緩存返回 是最古老的。

相關問題