【发布时间】: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