我实施了端点项目:
@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-jinja项目:
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
是否可以在同一个应用程序中托管这两个项目
答案 0 :(得分:1)
需要解决的基本问题是定义适当的整体应用程序请求命名空间,以便可以可靠地路由到相应的子应用程序,请记住:
在您的情况下,复杂性来自子应用程序的冲突命名空间。例如,wsgi-jinja项目中的/
和/tasks/wipe-ds
路径都与端点项目中的.*
命名空间冲突。要使其工作,必须修改其中一个子应用程序名称空间。
由于端点项目包含大量自动生成的代码,因此更改起来比较困难,因此我将其保留为默认代码并修改wsgi-jinja代码,例如通过前缀 - 用/www
来表达它。为此,需要相应地修改wsgi-jinja的内部路由:
/
- > /www
/tasks/wipe-ds
- > /www/tasks/wipe-ds
您现有的项目似乎都有froomMain.py
个文件,其中包含application
个全局内容,存在冲突。我要重命名wsgi-jinja的一个,让我们对www.py
说:
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