Google App Engine上的Cookie存储

时间:2012-04-24 15:22:11

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

极端新手,提前道歉,我不知道我在做什么 - 但我真的环顾四周。

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

我使用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信息传递给每个处理程序吗?在memcache中填充一些东西?我究竟需要传递什么才能让cookie回到有效的开场白?

非常感谢任何关注上述内容的人。

1 个答案:

答案 0 :(得分:1)

您可以通过deferred library而不是任务队列传递对象。

但出于可靠性原因,我建议您将对象存储在数据存储区中,并仅在任务队列中传递引用。