0

我有两个 GAE 应用程序协同工作。一个在数据库中保存一个对象,另一个从第一个应用程序中获取该对象。下面我有一些代码,其中要求第一个应用程序并提供 Critter 对象。我正在尝试通过 urllib2 访问第一个应用程序的对象,这真的可能吗?我知道它可以用于 json 但它可以用于对象吗?

只是在某些情况下,我正在开发这个作为一个类的项目。学生将学习如何通过创建他们的小动物来托管 GAE 应用程序。然后他们会给我他们的小动物的网址,我的应用程序将使用这些网址收集他们所有的小动物,然后将它们放入我的应用程序的世界。

我最近才听说泡菜,还没有研究过,这可能是一个更好的选择吗?

小动物.py:

class Access(webapp2.RequestHandler):
    def get(self):
        creature = CritStore.all().order('-date').get()
        if creature:
            stats = loads(creature.stats)
            return SampleCritter(stats)
        else:
            return SampleCritter() 

地图.py:

class Out(webapp2.RequestHandler):
    def post(self):
        url = self.request.POST['url']#from a simple html textbox
        critter = urllib2.urlopen(url)
        ...work with critter as if it were the critter object...
4

1 回答 1

0

是的,你可以用泡菜。

这是一些传输实体的示例代码,包括密钥:

entity_dict = entity.to_dict() # First create a dict of the NDB entity
entity_dict['entity_ndb_key_safe'] = entity.key.urlsafe() # add the key of the entity to the dict
pickled_data = pickle.dumps(entity_dict, 1) # serialize the object
encoded_data = base64.b64encode(pickled_data) # encode it for safe transfer

作为 urllib2 的替代方案,您可以使用 GAE urlfetch.fetch()

在请求的应用程序中,您可以:

entity_dict = pickle.loads(base64.b64decode(encoded_data)) 
于 2013-06-26T21:29:38.147 回答