2011-04-29 38 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

相关问题