2011-04-29 75 views
1

我有一個BeautifulSoup.Tag對象,我想在http post請求中傳輸。 具體來說,這是一個在谷歌應用程序引擎執行任務的請求。如何在Google應用引擎中的http post請求中傳遞'BeautifulSoup.Tag'對象?

這是代碼:

taskqueue.add(url='/maintenance', method='post', params={'row': row})

當我接收在另一端的請求,參數行是Unicode字符串。我如何獲得我的原始對象?正如我所說的,json eval不適用於這類對象,那麼是否還有另一種解決方案我是否只能通過簡單對象?

回答

1

嗯。美麗的湯是一種評價者。所以我可以發送對象的html和重用美麗的湯。

我就是這麼做的:

taskqueue.add(url='/maintenance', params={'element': str(myObject)})

,然後再利用任務本身內部湯:

payload = self.request.get('element')

soup = BeautifulSoup(payload)

+0

這是肯定要走的事情是明智的。 – 2011-04-30 11:58:55

0

我想你可以嘗試Python的鹹菜功能通過字符串傳遞的價值。 http://docs.python.org/library/pickle.html

另一種方式將使用memcache。 只是將值存儲到memcache並將密鑰傳遞給任務。

例如

memcache.set("some_random_generate_key", row) 
taskqueue.add(url='/maintenance', method='post', params={'row_key': "some_random_generate_key"}) 

然後在任務處理程序,只需再次得到內存緩存值。 (事實上,谷歌的AppEngine也用泡菜在商店內存緩存值)

memcache.get(row_key) 
+0

memcache不耐用。使用泡菜。 – 2011-04-30 00:10:52

+0

看起來很優雅,但我得到這個錯誤:'RuntimeError:超過最大遞歸深度' – Uri 2011-04-30 00:33:31

+1

http://bytes.com/topic/python/answers/769013-recursion-limit-pickle 好吧,我找到了在某些情況下,美麗的臉頰不可舔。 :/ – lucemia 2011-04-30 00:35:56

相關問題