脚本只能在第一次运行时正常工作
问题描述:
脚本必须从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)
答
的AppEngine网址提取服务不appear缓存响应。正如通在这个google appengine group thread提到的,/禁用缓存,你需要把它添加到您请求头:
headers={'Cache-Control': 'no-cache,max-age=0', 'Pragma': 'no-cache'}
哪里"max-age"
是你想要的数据从缓存返回 是最古老的。