App引擎“模块”是App Engine中的一个新的(实验性且容易混淆的)功能:https://developers.google.com/appengine/docs/python/modules。正在敦促开发人员将“后端”功能的使用转换为使用这一新功能。
启动模块实例似乎有两种方法:向其发送HTTP请求(即http://modulename.appname.appspot.com
应用程序和appname
模块的modulename
,或者致电google.appengine.api.modules.start_module()
。
简单方法
启动模块实例的简单方法似乎是创建HTTP请求。但是,在我的情况下,这只会产生两种结果,这两种结果都不是我想要的结果:
如果我使用我的应用程序定义的后端名称,即http://backend.appname.appspot.com
,则请求被正确路由到后端并被正确拒绝(因为后端访问默认定义为私有)。
其他任何操作都会导致请求被路由到默认模块的唯一前端实例,即使使用随机字符串作为模块名称,例如http://sdlsdjfsldfsdf.appname.appspot.com
。这甚至适用于虚构的实例ID,例如在http://99.sdlsdjfsldfsdf.appname.appspot.com
等情况下。当然(这也是问题)我的模块的实际名称。< / p>
从API开始
文档说,使用模块和版本的名称调用start_module()
应该会启动指定模块的指定版本。但是,每当我使用有效参数调用此函数时,我都会得到UnexpectedStateError
。
不幸的事态
因为我无法使用它,我想知道文档是否有一些细微之处可能没有提及。我的设置非常简单,所以我想知道这是否是某个人找到解决方案的普遍问题。
答案 0 :(得分:3)
事实证明版本不能是数字。这个问题似乎一直在发生,因为我们模块的版本是“1”而不是(例如)“v1”。
答案 1 :(得分:0)
使用模块,他们稍微改变了术语。过去的“后端”现在是“基本缩放”或“手动缩放”实例。
“自动缩放”和“基本缩放”实例在处理请求时启动,而“手动缩放”实例则不断运行。
通常,要启动实例,您需要向模块的URL发送HTTP请求。
start_module()似乎对具有“手动缩放”实例的模块的使用有限,或者重新启动已使用stop_module()停止的模块。
答案 2 :(得分:0)
您可以添加:
login: admin
到后端的处理程序。这样管理员用户可以调用您的后端并触发它运行。使用login:admin,您还可以在应用程序(即从前端)触发后端时发出URLFetch请求。