Google app engine gcloud dev_appserver.py启动Dart管理的VM时出错

Google app engine gcloud dev_appserver.py启动Dart管理的VM时出错,google-app-engine,dart,gcloud,Google App Engine,Dart,Gcloud,我为AppEngine配置了一个Dart管理的VM,如上所述。它已经过时,仍然使用现在删除的gcloud预览应用程序运行,而不是dev_appserver.py。但是,我发现其他人在Dart虚拟机上成功地使用了dev_appserver.py,但我得到了以下错误: $ dev_appserver.py app.yaml --runtime custom INFO 2015-12-11 12:19:50,907 application_configuration.py:431] No ve

我为AppEngine配置了一个Dart管理的VM,如上所述。它已经过时,仍然使用现在删除的
gcloud预览应用程序运行
,而不是
dev_appserver.py
。但是,我发现其他人在Dart虚拟机上成功地使用了
dev_appserver.py
,但我得到了以下错误:

$ dev_appserver.py app.yaml --runtime custom
INFO     2015-12-11 12:19:50,907 application_configuration.py:431] No version specified. Generated version id: 20151211t121950
INFO     2015-12-11 12:19:50,908 devappserver2.py:769] Skipping SDK update check.
INFO     2015-12-11 12:19:50,939 api_server.py:205] Starting API server at: http://localhost:36858
INFO     2015-12-11 12:19:50,951 api_server.py:648] Applying all pending transactions and saving the datastore
INFO     2015-12-11 12:19:50,951 api_server.py:651] Saving search indexes
Traceback (most recent call last):
  File "/opt/google/cloud-sdk/platform/google_appengine/dev_appserver.py", line 83, in <module>
    _run_file(__file__, globals())
  File "/opt/google/cloud-sdk/platform/google_appengine/dev_appserver.py", line 79, in _run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "/opt/google/cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 1040, in <module>
    main()
  File "/opt/google/cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 1033, in main
    dev_server.start(options)
  File "/opt/google/cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 824, in start
    self._dispatcher.start(options.api_host, apis.port, request_data)
  File "/opt/google/cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/dispatcher.py", line 194, in start
    _module.start()
  File "/opt/google/cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/module.py", line 1548, in start
    self._add_instance()
  File "/opt/google/cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/module.py", line 1700, in _add_instance
    expect_ready_request=True)
  File "/opt/google/cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/custom_runtime.py", line 83, in new_instance
    assert self._runtime_config_getter().custom_config.custom_entrypoint
AssertionError

教程已过时,您无法再执行此操作

原因是您正在使用自定义运行时(教程中的
app.yaml
具有
runtime:custom

自定义运行时不能再在开发服务器上运行(请参阅)


可以运行应用程序,但您必须部署到应用程序引擎服务器。

我认为正确的做法是指定一个运行dart服务器应用程序的自定义入口点,因为
--runtime
仅适用于特定支持的兼容运行时。请参阅dev_appserver.py的错误输出:

google.appengine.tools.devappserver2.errors.InvalidAppConfigError: 
Must set either --runtime or --custom_entrypoint.  
For a standard runtime, set the --runtime flag with one of 
['java-compat', 'java', 'php55', 'python', 'custom', 
'python-compat', 'java7', 'python27', 'go'].  
For a custom runtime, set the --custom_entrypoint with a command to start your app.

你的app.yaml看起来怎么样?是否传递自定义_运行时标志?我现在没有app.yaml,但它是默认的
运行时:自定义,vm:true,api\u版本:1
。我还尝试了
--custom_entrypoint
选项,但失败了,因为
dev_appserver
已经声明了端口8080(带有默认模块的内容),所以Dart无法使用它。我会尽快添加错误日志,我现在在另一台机器上。@GünterZöchbauer我为你建议的方法添加了错误消息。我自己已经有很长时间没有使用它了。也许其他人也有想法。你能运行
sudo netstat-plant
来确定8080上是否还有其他东西在运行吗?这是不正确的,刚刚发布到你链接的问答中。一般来说,在自述文件中信任一次性的评论是不对的。如果官方文档对如何运行自定义运行时dev_appengine.py说了一些话(任何事情,任何事情),那会很有帮助。而且--runtime标志似乎是新的。我在1.9.28中找不到它。你能详细说明一下——custom_entrypoint的功能吗?dev_appserver.py--help简单地解释了术语:“为自定义运行时模块指定入口点”。入口点是什么意思?是档案吗?这是一个节目吗?它是docker容器中的程序吗?运行dev_appserver.py的计算机?该程序应该做什么?它与听起来完全一样,一个命令生成一个进程,监听相应的端口,如
node server.js
,或
gunicorn-b localhost:{port}mymodule:application
(第二个命令显示了{port}的用法)作为命令中的模板,在运行之前将使用适当的值填充)。以及进程在连接到端口后应该做什么?此过程与我的Dockerfile指定的docker映像有何关联?我应该启动docker容器来实现这个过程吗?正如
node server.js
所建议的,应该发生的是,这个过程将侦听该端口上的HTTP请求并发送响应。请注意,这只是运行代码的一种方式。您可以简单地运行节点/dart服务器本身,也可以像您刚才暗示的那样,从Dockerfile构建一个映像并在容器中运行它。后者将是生产环境最精确的近似值。啊!所以它应该实现这个模块!!!这是一个实现模块的过程!如果你问我,这根本不是“入口点”的意思。但是,这是如何与多个模块一起工作的?
google.appengine.tools.devappserver2.errors.InvalidAppConfigError: 
Must set either --runtime or --custom_entrypoint.  
For a standard runtime, set the --runtime flag with one of 
['java-compat', 'java', 'php55', 'python', 'custom', 
'python-compat', 'java7', 'python27', 'go'].  
For a custom runtime, set the --custom_entrypoint with a command to start your app.