2013-07-24 19 views
2

的App Engine 「模塊」 應用程序引擎模塊是在App Engine中一個新的(實驗性的,容易混淆的命名)功能:https://developers.google.com/appengine/docs/python/modules。正在敦促開發人員將「後端」功能的使用轉換爲使用此新功能。開始在谷歌應用程序引擎

似乎有是兩種方法啓動的模塊的實例:向(在http://modulename.appname.appspot.com即對於appname應用和modulename模塊)發送一個HTTP請求給它,或調用google.appengine.api.modules.start_module()

的簡單方法

最簡單的方式開始新模塊的事例似乎是創建一個HTTP請求。然而,在我的情況下,這導致只有兩個結果,這兩者都不是我想要的東西:

  • 如果我用我的應用程序定義的後端,即http://backend.appname.appspot.com的名字,請求被正確地路由到後端並正確拒絕(因爲後端訪問被默認定義爲私有)。

  • 即使使用隨機字符串作爲模塊名稱(如http://sdlsdjfsldfsdf.appname.appspot.com),其他任何結果都會將請求路由到默認模塊的唯一前端實例。這甚至捏造的實例ID持有如在http://99.sdlsdjfsldfsdf.appname.appspot.com,等等。當然的情況下(這是問題)的實際名字我的模塊爲好。

通過API

文檔開始說,調用​​與模塊和版本的名稱應該引起指定模塊的指定版本啓動。但是,無論何時使用有效參數調用此函數,我都會得到一個UnexpectedStateError

因爲我不能得到這個工作,我不知道是否有一些微妙的文檔可能不會提及事務的不幸國家。我的設置非常簡單,所以我想知道這是否是一個普遍存在的問題,有人找到了解決方案。

+0

我看到模塊的方式,他們不是開始的東西。相反,它是將您的應用分成不同邏輯單元的一種方式,例如您的應用的網頁和API部分。因此,查看模塊的一種方式是在一個應用程序中的多個應用程序共享資源,如數據存儲區和內存緩存區。在[Python示例](https://github.com/GoogleCloudPlatform/appengine-modules-helloworld-python)中,沒有提到啓動模塊。他們只是有不同的網址。 – dlebech

+0

但是在管理儀表板中,您可以查看已爲您的應用啓動的實例,並且每個實例都與模塊和版本相關聯。 (事實上​​,你選擇一個模塊和一個版本,然後可以查看與該對相關聯的任何實例。)當你查看實例時,你可以關閉它們......所以它們以某種方式開始。 – Jeremy

+1

實例在向您的應用程序發出請求時自動啓動。在模塊的情況下,我的猜測是它的工作原理是相同的:當一個模塊提供的url請求發生時,模塊的實例會自動啓動。當然,您可以設置一些空閒實例(在應用程序設置下),您也可以按需啓動實例(某種程度上),但通常會自動發生並且不是特定於模塊的事件。再次,這是基於我的理解,所以我可能是錯的。 – dlebech

回答

3

事實證明,版本不能是數字。這個問題似乎已經發生,因爲我們的模塊版本是「1」而不是(例如)「v1」。

0

的模塊,他們改變了術語周圍一點點。過去的「後端」現在是「基本縮放」或「手動縮放」實例。

「自動縮放」和「基本變」情況下,當他們處理的請求開始,而「手動縮放」情況下不斷運行。

一般來說,開始你需要發送一個HTTP請求到你的模塊的網址一個實例。

start_module()似乎具有用於與「手動縮放」的情況下,或重新啓動已停止了與stop_module模塊()模塊有限的使用。

+1

謝謝你的答案。其實,這也不適用於我的情況;我會編輯這個問題來澄清。 – Jeremy

0

您可以添加:

login: admin 

到處理器的後端。這樣一個管理員用戶可以調用你的後端並觸發它運行。使用login:admin,你也可以在應用程序中(也就是從前端)觸發你的後端,發出問題URLFetch請求。

+1

有問題的模塊已經配置爲公開,所以這個建議不幸在這種情況下不會帶來好處。 – Jeremy