首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >脚本只有在第一次运行时才能正常运行

脚本只有在第一次运行时才能正常运行
EN

Stack Overflow用户
提问于 2016-11-19 05:30:47
回答 1查看 40关注 0票数 0

该脚本必须从api获取帖子,并将其保存到数据库中。

在成功运行脚本后,它将无法获取新的帖子,即使在接下来的5-24小时内有一些新的帖子。它每次都会返回相同的旧响应,就像从缓存中运行一样。(如果我删除旧的帖子,它仍然会将它们添加到数据库中)

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

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

我真的搞不懂它,有没有缓存响应之类的东西?或者这可能是reddit api方面的一个问题?添加这些选项中的任何一个会有帮助吗?

代码语言:javascript
复制
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 100,
CURLOPT_TIMEOUT => 100

我目前正在使用请求库进行请求

代码语言:javascript
复制
r = requests.get(url, headers = {'User-agent': 'My App 12345'})
response = r.json()

下面是我的脚本的GAE部分

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2016-11-28 15:42:19

Appengine URL抓取服务执行appear来缓存响应。如此google appengine group thread中所述,要绕过/禁用缓存,您需要将以下内容添加到请求标头中:

代码语言:javascript
复制
headers={'Cache-Control': 'no-cache,max-age=0', 'Pragma': 'no-cache'}

其中,"max-age"是您希望从缓存返回的最旧数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40686228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档