2012-04-24 35 views
0

極端新手,提前道歉,我不知道我在做什麼 - 但我真的環顧四周。谷歌應用引擎上的Cookie存儲

我下載登錄表單後面幾十幾頁和dbing結果,在GAE上運行。我想將每個頁面讀取和數據庫寫入排入任務隊列。當我轉換到任務隊列時,我意識到我的會話周圍有問題。

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 

以前我只是在事物的頭端實例化這個類一次,創建一個會話實例變量給大家使用,然後圍繞通過我的實例化:

我使用的urllib2創建一個開門紅保持上下文。使用任務隊列我不能傳遞對象,所以當我的請求處理程序被調用時,我不能給他參考開啓者或cookie。

是否有存儲或傳輸的揭幕戰中,或者cookie的信息,這樣我可以創建一個沒有每次都重新登錄了新的揭幕戰的方式?我可以通過標題字典將cookie信息傳遞給每個處理程序嗎?在memcache中填充內容?我需要傳遞什麼信息才能將cookie返回到有效的開叫器中?

非常感謝的人誰通過上面的跋涉。

回答

1

您可以通過deferred library,而不是任務隊列傳遞對象。

但對可靠性的原因,我建議您存儲在數據存儲你的對象,只有通過那裏TaskQueue中參考。

+0

這只是我恍然大悟什麼泡菜是怎麼一回事......我不知道我可以重建類似於從數據庫中的類的實例。這非常酷。我會嘗試把它放到數據庫並傳遞參考。 – user1354036 2012-04-24 22:43:10

+0

@ user1354036只是不要讓所有的權力都去你的腦袋。 ;)鹹菜有一些好處,像這樣(至少可以說),而其他的則不如用戶數據。就個人而言,我認爲沒有充分理由將cookie存儲在數據存儲區中 - 引用不會比cookie本身小得多。 – 2012-04-27 04:11:52