脚本必须从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 :(得分:0)
Appengine URL Fetch服务执行appear以缓存响应。如此google appengine group thread中所述,要绕过/禁用缓存,您需要将其添加到请求标头中:
headers={'Cache-Control': 'no-cache,max-age=0', 'Pragma': 'no-cache'}
其中"max-age"
是您希望从缓存返回的最旧数据
是