如何传递“BeautifulSoup.Tag”谷歌应用程序引擎中http post请求内的对象?

发布于 2024-11-04 11:56:39 字数 319 浏览 0 评论 0原文

我有一个 BeautifulSoup.Tag 对象,我想在 http post 请求中传输它。 具体来说,这是谷歌应用程序引擎中的任务将执行的请求。

这是代码:

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

当我在另一端收到请求时,参数row是一个unicode字符串。如何取回原来的对象?据我了解 json eval 不适用于这种类型的对象,那么还有另一种解决方案吗?我是否被迫仅传递简单的对象?

I have a BeautifulSoup.Tag object which I want to transfer in an http post request.
Specifically this is a request a task in google app engine would perform.

This is the code:

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

When I receive the request on the other end, the parameter row is a unicode string. How do I get my original object back? As I undersand json eval won't work for this kind of object, so is there another solution Am I compelled to pass simple objects only?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可爱暴击 2024-11-11 11:56:39

嗯。美汤是一种评价者。这样我就可以发送对象的 html 并重用漂亮的汤。

我这样做是这样的:

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

然后在任务本身内重用 soup:

payload = self.request.get('元素')

汤= BeautifulSoup(有效负载)

Hmmm. Beautiful soup is kind of an evaluator. So I can send the object's html and the reuse beautiful soup.

I did it this way:

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

and then reused soup inside the task itself:

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

soup = BeautifulSoup(payload)

独行侠 2024-11-11 11:56:39

我想你可以尝试 python 的 pickle 函数通过字符串传递值。
http://docs.python.org/library/pickle.html

另一种方法是使用内存缓存。
只需将值存储到内存缓存并将密钥传递给任务即可。

例如

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

,然后在任务处理程序中,只需再次从内存缓存中获取值即可。
(事实上​​,google appengine也使用pickle在memcache中存储值)

memcache.get(row_key)

I guess you can try python's pickle functions to pass the value by string.
http://docs.python.org/library/pickle.html

Another way will be use memcache.
just store the value to memcache and pass the key to tasks.

for example

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

then in the task handlers, just get the value from memcache again.
(in fact, google appengine also used pickle to store value in memcache)

memcache.get(row_key)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文