我正在尝试使用gcloud将我的python应用程序部署到生产中,但每次都会弹出这个奇怪的消息,而且我没有在Google搜索中找到任何信息......
当我跑步时:
gcloud preview app deploy
此消息apepars:
This looks like a Python app. If so, please enter the command to run
to run the app in production (enter nothing if it's not a python app):
我尝试使用appcfg.py执行常规命令:
❯ appcfg.py -A <appname> update app.yaml
但每次都会抛出超时。
任何人都知道在这种情况下我应该做些什么?
谢谢!
修改
我的App.yaml
runtime: python
api_version: 1
threadsafe: yes
vm: true
handlers:
- url: .*
script: main.app
- url: /_ah/queue/deferred
script: google.appengine.ext.deferred.deferred.application
login: admin
#libraries:
#- name: MySQLdb
#version: "latest"
builtins:
- remote_api: on
- deferred: on
resources:
cpu: .5
memory_gb: 2.3
disk_size_gb: 10
编辑2
我已将运行时更改为自定义,现在它不再询问任何内容。现在的问题是它会抛出超时:
(gcloud.preview.app.deploy) Error Response: [13] Timed out when starting VMs. It's possible that the application code is unhealthy. (0/2 ready, 2 still deploying)
我找到了有关此错误的信息,如果我弄清楚的话,我会回到这里。
由于
答案 0 :(得分:4)
由于这个问题没有被接受的答案,我会在这里为任何未来的读者发布一个。
部署正在提示输入点,因为它未在app.yaml中指定。在灵活环境中运行Python运行时应用程序需要此字段。将运行时更改为“自定义”将不会提示,但应用程序容器仍然不知道如何运行您的应用程序,因此VM将无法启动。
文档中提供了更多详细信息:
应用程序启动 https://cloud.google.com/appengine/docs/flexible/python/runtime#application_startup
答案 1 :(得分:1)
我有同样的错误。我将“cd”编辑到app.yaml所在的目录中,然后再次运行该命令并成功部署。
答案 2 :(得分:1)
我遇到了同样的问题,发现我需要在app.yaml中添加“entrypoint”属性并将其配置为指向我的启动脚本。我正在使用以下app.yaml运行Python 3.5应用程序(Flask)。请注意入口点属性:
runtime: python
threadsafe: true
env: flex
entrypoint: gunicorn -b :$PORT application:APP
runtime_config:
python_version: 3.5
handlers:
- url: /.*
script: application.APP