0

我正在尝试在两个 GAE 应用程序之间共享一个对象。第一个将拥有类的文件,并提供该对象的一个​​实例。第二个,使用给定的 url,将访问第一个应用程序,获取对象,然后使用 is。这真的可能吗?如果是这样,我在下面的代码中做错了什么?

作为一个小旁注,我尝试了一个使用 pickle 的解决方案,但是这两个应用程序都需要在其名称空间中包含该类,但我将使用其中的一些。我曾想过尝试通过使用继承来模仿 Java 的抽象类之类的东西,但没有成功。如果您想查看,我也可以提供该代码。

  • 我了解可能的服务条款,这不是问题。

  • 我知道云计算已经存在,我不知道如何使用它,而且我更愿意避免成本,因为我正在将它作为一个类项目来开发。

  • 我已经看到了一些使用 remote_api 的建议,但是我没有看到如何使用它的好例子,更不用说用于允许两个应用程序交互了。

  • 我已经看到了使用多个版本的解决方案,但是每个学生都会有一个应用程序,这会非常混乱,但可能是可行的。

首先.Py:

class SampleCritter():
    def move():
        ...
class Access(webapp2.RequestHandler):
    def post(self):
        CritStore(stats=self.request.body).put()

    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']
        critter = urllib2.urlopen(url)
        critter.move()
4

1 回答 1

1

简短的回答是,您不能在应用程序之间共享对象。

更长的答案是,您的第一个应用程序可以使用基于 HTTP 的 API 公开对象。任何客户端都可以访问 HTTP API,包括应用程序 2。

应用 2 必须通过 HTTP API 操作对象。您将无法critter.move()从应用程序 2 调用,但如果您创建一个处理程序说,critter\move您可以让处理程序拉起适当的 Critter 实例并在其上调用 move()。您还必须通过 HTTP POST 传递所有适当的参数。

于 2013-07-02T14:49:18.430 回答