2013-07-02 40 views
0

我想在兩個GAE應用程序之間共享一個對象。第一個將擁有該類的文件,並將提供該對象的一個​​實例。第二,使用給定的url,將訪問第一個應用程序,獲取對象,然後使用is。這實際上可能嗎?如果是的話,我在下面的代碼中沒有做什麼?在應用程序之間共享對象

作爲一個小方面的說明,我嘗試了一個解決方案,但兩個應用程序都需要在其名稱空間中有類,但是我將使用其中的一部分。我想通過繼承來模仿Java的抽象類之類的東西,但那並不成功。如果您想查看,我也可以提供該代碼。

  • 我瞭解可能的服務條款,這不是問題。

  • 我知道雲計算是在那裏,我不知道如何使用它,我想 寧願避免成本,因爲我正在開發這個類項目。

  • 我已經看到了一些使用remote_api的建議,但我沒有看到如何使用它的好例子 ,更不用說允許兩個應用程序進行交互了。

  • 我已經看到了使用多個版本的解決方案,但每個學生都會有一個應用程序,它會非常混亂,但可能是可行的。

First.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() 

Second.py:

class Out(webapp2.RequestHandler): 

    def post(self): 
     url = self.request.POST['url'] 
     critter = urllib2.urlopen(url) 
     critter.move() 

回答

1

簡短的回答是,你不能共享應用程序之間的對象。

較長的答案是,您的第一個應用程序可以使用基於HTTP的API公開對象。任何客戶端都可以訪問HTTP API,包括應用程序2.

應用程序2必須通過HTTP API操作對象。您將無法從應用程序2調用critter.move(),但如果您創建處理程序,例如critter\move,則可以讓處理程序拉起相應的Critter實例並調用move()。您也必須通過HTTP POST傳遞所有適當的參數。

+0

對不起,我對此深有感觸,你是什麼意思?「創建一個處理程序說,生物\移動」,其餘的? – EasilyBaffled

+0

創建請求處理程序是App Engine中的基本內容。創建多個應用程序將成爲你的主要分心。關注如何讓一個應用程序首先運行。 – dragonx

+0

我很抱歉,但我不確定我關注。你是說將小動物轉化爲應用程序,以便應用程序中的每個頁面都是一個功能。例如,critter.com可能會返回一些值。 Critter.com/move會如何返回移動功能。你是這個意思嗎? – EasilyBaffled