2016-05-12 58 views
1

感謝asamarin,我已經能夠弄清楚如何在同一個谷歌應用程序引擎中獲得不同的端點(參見Using Google endpoints in different modules of the same app)。無法讓Google端點在多個服務上工作

但是我不能讓它工作(至少在開發服務器上,我沒有嘗試將它推到雲端)。我有兩個模塊:module1和module2,每個模塊運行一個獨立的API(使用谷歌端點)。 在每個MODULEX/main.py我有這樣的代碼:

import endpoints 
from protorpc import remote 

# ... some code 

@endpoints.api(name="moduleX", version='v0') # X being 1 or 2 obviously 
class ModuleX(remote.Service): 

# ... definition of the different methods 

api = endpoints.api_server([ModuleX]) 

當運行dev_appserver.py與兩個相應的模塊YAML文件,便開始以及(模塊在localhost:8080,模塊2在localhost:8081) 。

這裏談到的問題:

  • 本地主機:8080/_ah/API /探索的作品很好,我可以看到我的模塊1 API與不同的方法

  • 本地主機:8081/_ah/API/explore需要looooong時間,然後找到與module1完全相同的API,除非當我點擊它時,它找不到方法。

我打得有點與郵差,看看有什麼木下怎麼回事,結果發現,這兩個調用到localhost:8080/_ah/API /發現/ V1/API和本地主機:8081/_ah。 ..返回與discoveryRestUrl相同的信息:localhost:8080/_ah/api/discovery/v1/apis/module1/v0/rest。你會承認這很有趣。

我做錯了什麼?它僅僅是開發服務器不能處理具有多個服務的端點嗎?

感謝您的幫助

+1

任何使用多個服務端點的現有項目的任何鏈接/ git回購將不勝感激! – ValLeNain

+0

我面臨同樣的問題。找到了解決辦法? –

+0

nope,我們不得不重新組織我們的項目:/ – ValLeNain

回答

0

我相信這個問題只存在dev_appserver,因爲我有同樣的問題,因爲你在本地,但它工作得很好,一旦部署。

我爲我的端點服務的app.yaml看起來是這樣的:

runtime: python27 
threadsafe: true 
api_version: 1 
service: <module-name> 

handlers: 
- url: /_ah/spi/.* 
    script: my_script.api 

libraries: 
- name: pycrypto 
    version: 2.6 
- name: endpoints 
    version: 1.0 

一旦部署,爲了打我我的API請求發送到https://<module-name>-dot-<project-name>.appspot.com/_ah/api

所以你給的代碼,端點您需要點擊將是https://<module-name>-dot-<project-name>.appspot.com/_ah/api/<moduleX>/v0/<method> 請注意<module-name>在app.yaml中定義,<moduleX><method>將在my_script.api的python代碼中聲明。

爲了讓dev_appserver在本地工作,我相信你需要在它自己的dev_appserver實例中運行每個端點模塊,如here所述。誠然,我沒有得到這個完全在本地工作,因爲當我嘗試這樣做時,我得到了關於我的數據存儲被鎖定的錯誤,但我認爲應該可以解決這個問題,如注意here

相關問題