极端新手,提前道歉,我不知道我在做什么 - 但我真的环顾四周。
我正在下载登录表单后面的几十页并在 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 信息传递给每个处理程序吗?在内存缓存中填充一些东西?我到底需要传递什么才能将 cookie 重新放入有效的开瓶器中?
非常感谢所有参与上述内容的人。