2016-05-12 15 views
1

asamarinのおかげで、同じGoogleアプリケーションエンジン内で異なるエンドポイントを取得する方法を理解できました(cf Using Google endpoints in different modules of the same app)。複数のサービスで動作するGoogleエンドポイントを取得できません

しかし、私はそれを動作させることはできません(少なくともdevサーバでは、クラウドにプッシュしようとしていませんでした)。私はmodule1とmodule2の2つのモジュールを持っています。それぞれは独立したAPIを実行しています(Googleエンドポイントを使用しています)。各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]) 

私は2つの対応するモジュールのYAMLファイルをdev_appserver.py実行すると、彼らは(ローカルホスト上のモジュール1:8080、ローカルホスト上のモジュール2:8081)も開始し。

  • はlocalhost:8080/_ah/API /ウェル作品を探検し、私はさまざまな方法で私のModule1のAPIを参照してくださいすることができます

  • はlocalhost:8081/_ah/APIここで

    は問題が来ます/ explodeはlooooongの時間がかかってから、module1と全く同じAPIを見つけて、それをクリックしたとき以外はメソッドを見つけることができません。

私は木の下で何が起こっているかを確認するためにポストマンでビットを果たし、両方のローカルホストへの呼び出しことが判明しました:8080/_ah/API /発見/ V1/APIとはlocalhost:8081/_ah。 .. discoveryRestUrlがlocalhost:8080/_ah/api/discovery/v1/apis/module1/v0/restと同じ情報を返します。面白いですが、あなたは認めます。

何か間違っていますか?複数のサービスを持つエンドポイントを処理しないのはdevサーバーだけですか?私はローカルであなたと同じ問題を抱えていたが、導入後は、それがうまく働いたとして、この問題にのみ、dev_appserverで存在すると考えているあなたの助け

+1

複数のサービスを介してエンドポイントを使用している既存のプロジェクトへのリンク/ git repoは非常に高く評価されます。 – ValLeNain

+0

私は同じ問題に直面しています。解決策は見つかりましたか? –

+0

いいえ、プロジェクトを再編成する必要がありました:/ – ValLeNain

答えて

0

ため

感謝。

私のエンドポイントサービスのための私の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でローカルで作業するには、hereと書かれているように、各エンドポイントモジュールをdev_appserverの独自のインスタンスで実行する必要があると思います。確かに、私はこれをやろうとするとデータストアがロックされているというエラーが出るので、完全にローカルで作業することはできませんでしたが、その問題を修正するにはhereとする必要があります。

関連する問題