2

App 引擎“模块”是 App Engine 中的一项新功能(实验性且名称容易混淆):https ://developers.google.com/appengine/docs/python/modules 。正在敦促开发人员将“后端”功能的使用转换为使用此新功能。

似乎有两种方法可以启动模块的实例:向它发送 HTTP 请求(即应用程序和模块http://modulename.appname.appspot.com的at ),或调用.appnamemodulenamegoogle.appengine.api.modules.start_module()

简单的方法

启动模块实例的简单方法似乎是创建一个 HTTP 请求。但是,在我的情况下,这只会导致两种结果,这两种结果都不是我想要的:

  • 如果我使用我的应用程序定义的后端名称,即http://backend.appname.appspot.com,请求被正确路由到后端并被正确拒绝(因为后端访问默认定义为私有)。

  • 其他任何事情都会导致请求被路由到默认模块的唯一前端实例,即使使用随机字符串作为模块名称,例如http://sdlsdjfsldfsdf.appname.appspot.com. 这甚至适用于虚构的实例 ID,例如http://99.sdlsdjfsldfsdf.appname.appspot.com等。当然(这是问题)也适用于我的模块的实际名称。

通过 API 启动

文档说start_module()使用模块名称和版本调用应该会导致指定模块的指定版本启动。但是,UnexpectedStateError每当我使用有效参数调用此函数时,我都会得到一个。

不幸的事态

因为我无法让它工作,所以我想知道文档可能没有提到一些微妙之处。我的设置非常简单,所以我想知道这是否是一个普遍存在的问题,有人已经找到了解决方案。

4

3 回答 3

3

事实证明,版本不能是数字的。这个问题似乎一直在发生,因为我们模块的版本是“1”而不是(例如)“v1”。

于 2013-08-01T05:10:27.017 回答
0

通过模块,他们稍微改变了术语。过去的“后端”现在是“基本扩展”或“手动扩展”实例。

“自动扩展”和“基本扩展”实例在处理请求时启动,而“手动扩展”实例持续运行。

通常要启动一个实例,您会向模块的 URL 发送一个 HTTP 请求。

start_module() 似乎对具有“手动缩放”实例的模块的使用有限,或者重新启动已使用 stop_module() 停止的模块。

于 2013-07-24T16:55:16.780 回答
0

你可以加:

login: admin

到您的后端的处理程序。这样,管理员用户可以调用您的后端并触发它运行。使用 login: admin,您还可以让来自应用程序中其他地方的 URLFetch 请求(即来自前端)触发您的后端。

于 2013-07-25T02:33:16.967 回答