【问题标题】:How to pass a 'BeautifulSoup.Tag' object inside http post request in google app engine?如何在谷歌应用引擎的 http post 请求中传递“BeautifulSoup.Tag”对象?
【发布时间】:2011-04-29 23:54:09
【问题描述】:

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

这是代码:

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

当我在另一端收到请求时,参数 row 是一个 unicode 字符串。如何取回我的原始对象?由于我理解 json eval 不适用于这种对象,所以还有另一种解决方案我是否只能传递简单的对象?

【问题讨论】:

    标签: google-app-engine eval beautifulsoup httprequest http-post


    【解决方案1】:

    嗯。美丽的汤是一种评估者。这样我就可以发送对象的html和重用美汤了。

    我是这样做的:

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

    然后在任务本身中重用汤:

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

    soup = BeautifulSoup(有效负载)

    【讨论】:

    • 这绝对是明智的做法。
    【解决方案2】:

    我猜你可以试试 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)
    

    【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多