【问题标题】:Cookie Storage on Google App EngineGoogle App Engine 上的 Cookie 存储
【发布时间】:2012-04-24 15:22:11
【问题描述】:

极端新手,提前道歉,我不知道自己在做什么——但我确实环顾四周。

我正在下载登录表单后面的几十页,并在 GAE 上运行 dbing 结果。我想将任务队列中的每个页面读取和数据库写入排入队列。当我切换到任务队列时,我意识到我在传递我的会话时遇到了问题。

我使用 urllib2 创建了一个开瓶器:

    cj = cookielib.CookieJar()
    session = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    session.addheaders.append(('User-agent', 'Mozilla/4.0'))  
    login_data = urllib.urlencode({ 'username' : 'guest',
                                    'password' : 'guest',
                                    'Submit1'  : 'Submit'})  
    resp = session.open(self.login_page, login_data, timeout=20) 
    self.session = session

以前我只在事物的前端实例化这个类一次,创建一个供所有人使用的会话实例变量,然后传递我的实例化以保持上下文。使用任务队列我不能传递对象,所以当我的请求处理程序被调用时,我不能给他引用打开器或 cookie。

有没有办法存储或传递开瓶器或 cookie 信息,这样我就可以构建一个新的开瓶器而无需每次都重新登录?我可以通过 headers 字典将 cookie 信息传递给每个处理程序吗?在内存缓存中填充一些东西?我到底需要传递什么才能将 cookie 重新放入有效的开启程序?

非常感谢所有参与上述内容的人。

【问题讨论】:

    标签: python google-app-engine cookies queue task


    【解决方案1】:

    你可以通过deferred library而不是taskqueue来传递对象。

    但出于可靠性考虑,我建议您将对象存储在数据存储中,并且只在任务队列中传递引用。

    【讨论】:

    • 我突然明白了什么是泡菜……我没有意识到我可以从数据库中重构类实例之类的东西。这很酷。我将尝试将其放入数据库并传递参考。
    • @user1354036 只是不要让权力全部冲昏头脑。 ;) pickle 有一些好处,比如这个(至少可以说是这样),而另一些则不是,比如用户数据。就个人而言,我认为没有充分的理由将 cookie 存储在数据存储中 - 引用不会比 cookie 本身小很多。
    猜你喜欢
    • 2021-11-29
    • 2011-02-01
    • 2011-01-24
    • 2011-12-24
    • 2011-05-26
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多