我尝试使用AppEngine的module s api for python来获取使用基本伸缩的模块的实例数。在模块的yaml文件中,我显式地设置了max_instances参数。我希望get_num_instances()将返回该参数的值。
问题:每当我启动modules.get_num_instances(…)时,该方法都会引发InvalidVersionError。
我的应用只有一个版本,“v1”。当我将version参数设置为“v1”或甚至将其保留为None(根据文档,该参数采用当前版本)时,会引发错误。
当我调用get_num_instances()时,该模块中没有活动实例。这有什么区别吗?
我还没有找到一种不引发错误的方法来调用此方法。这个问题出现在GAE和dev_服务器中。我正在使用SDK 1.9.18版本。
更新
这是模块的yaml文件
application: my_gae_app
module: my_module
version: v1
runtime: python27
api_version: 1
threadsafe: true
instance_class: B2
basic_scaling:
max_instances: 3
idle_timeout: 1m
inbound_services:
- warmup
skip_files:
- ^(.*/)?#.*#
- ^(.*/)?.*~
- ^(.*/)?.*\.py[co]
- ^(.*/)?.*/RCS/.*
- ^(.*/)?\..*
- ^(.*/)?tests$
- ^(.*/)?test$
- ^Makefile
- ^COPYING.LESSER
- ^README.md
- \.gitignore
- ^\.git/.*
- \.*\.lint$
- ^\localdata/.*
builtins:
- appstats: on #/_ah/stats/
- remote_api: on #/_ah/remote_api/
- deferred: on
handlers:
- url: /.*
script: my_start_script.the_wsgi_app
libraries:
- name: jinja2
version: "2.6"
- name: webapp2
version: "2.5.2"
- name: markupsafe
version: "0.15"
- name: webob
version: "1.2.3"
- name: ssl
version: latest
我尝试调用get_num_instances(),如下所示:
获取_num_实例(module='my_module',version='v1')
获取_num_实例(module='my_module')
获取实例()
我还仔细检查了模块名的拼写,modules.get_modules()返回正确的名称。我对version,modules做了同样的操作。get_current_version_name()返回“v1”。
最佳答案
如源代码文档[1]所述,此方法仅适用于手动缩放实例。自动缩放的实例(包括基本缩放)将抛出该错误。
[1]https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/modules/modules.py?r=411#236
更新:我得到了Google云支持的官方确认,这确实是一个简单的文档错误,因此正如我在最初的答案中所假设的,get_num_instances
只适用于手动缩放的实例/模块/版本。
关于python - get_num_instances引发InvalidVersionError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28721909/