2016-10-19 11 views
0

可能です私は、エンドポイントのプロジェクト実装:が、それは同じのApp EngineプロジェクトにエンドポイントとWSGIApplicationアプリケーションをホストする

@endpoints.api(name='froom', version='v1', description='froom API') 
class FRoomApi(remote.Service): 
    @endpoints.method(FbPutRoomRequest, RoomMessage, path='putroom/{id}', http_method='PUT', name='putroom') 
    def put_room(self, request): 
     entity = FRoom().put_room(request, request.id) 
     return entity.to_request_message() 

application = endpoints.api_server([FRoomApi],restricted=False) 

app.yamlを

- url: /_ah/spi/.* 
    script: froomMain.application 

- url: .* 
    static_files: index.html 
    upload: index.html 

を、私は別のWSGI神社のプロジェクトがあります。

routes = [ 
    Route(r'/', handler='handlers.PageHandler:root', name='pages-root'), 
    # Wipe DS 
    Route(r'/tasks/wipe-ds', handler='handlers.WipeDSHandler', name='wipe-ds'), 
    ] 
config = { 
    'webapp2_extras.sessions': { 
     'secret_key': 'someKey' 
    }, 
    'webapp2_extras.jinja2': { 
     'filters': { 
      'do_pprint': do_pprint, 
      }, 
     }, 
    } 
application = webapp2.WSGIApplication(routes, debug=DEBUG, config=config) 

app.yamlを

適切なサブアプリへのルーティングが確実に行うことができるように
- url: /.* 
    script: froomMain.application 

はそれが対処する必要が根本的な問題は、適切な全体的なアプリケーションの要求の名前空間を定義している同じアプリケーションでこれらの二つのプロジェクトをホストする

答えて

1

可能です、念頭に置いていること:

  • は、唯一のサブアプリは、(他のサブアプリの名前空間のいずれかに一致しない要求を処理します)デフォルトの1に指定することができます。それは、要求を処理するために失敗した場合は、1つのサブアプリにルーティングするデフォルトのサブアプリ
  • 意思決定のための名前空間は、最終的になる前に、すべての非デフォルトのサブアプリケーションため
  • 名前空間をチェックする必要があります404を返すと、要求を処理できる別のサブアプリケーションにフォールバックはありません。

場合によっては、サブアプリケーションの名前空間の競合が原因で問題が発生します。たとえば、wsgi-jinjaプロジェクトの//tasks/wipe-dsの両方のパスが、エンドポイントプロジェクトの.*名前空間と衝突します。サブアプリケーションの1つを動作させるには、名前空間を変更する必要があります。

エンドポイントプロジェクトには自動生成されたコードが多く含まれているため、変更するのは難しいので、デフォルトのものとして残してwsgi-jinjaを修正します。たとえば、接頭辞は/wwwです。これが機能するためにWSGI神社の内部ルートはそれに応じて変更する必要があります

  • / - >/www
  • /tasks/wipe-ds - >/www/tasks/wipe-ds

どちらも既存のプロジェクトを持つfroomMain.pyファイルを持っているように見えますapplicationグローバルな内部、競合する。

routes = [ 
    Route(r'/www/', handler='handlers.PageHandler:root', name='pages-root'), 
    # Wipe DS 
    Route(r'/www/tasks/wipe-ds', handler='handlers.WipeDSHandler', name='wipe-ds'), 
    ] 
config = { 
    'webapp2_extras.sessions': { 
     'secret_key': 'someKey' 
    }, 
    'webapp2_extras.jinja2': { 
     'filters': { 
      'do_pprint': do_pprint, 
      }, 
     }, 
    } 
application = webapp2.WSGIApplication(routes, debug=DEBUG, config=config) 

あなたapp.yamlファイルは次のようになります:

- url: /www/.* 
    script: www.application 

- url: /_ah/spi/.* 
    script: froomMain.application 

- url: .* 
    static_files: index.html 
    upload: index.html 
私はのはwww.pyに言わせ、WSGI神社の1の名前を変更したいです
関連する問題