我有一个带有Django后端和Angular前端的项目。我已将它们作为两项服务部署到 Google App Engine标准中,并且部署成功成功。
但是,当我尝试访问后端网址this-backend.appspot.com
时,我得到了
/bin/sh: 1: exec: gunicorn: not found
我的需求文件中有 gunicorn :
gunicorn==19.9.0
我还定义了入口点:
runtime: python37
service: default
entrypoint: gunicorn -b :$PORT thisapp.wsgi
handlers:
- url: /static
static_dir: static
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
但仍然出现相同的错误。
我研究了Stackoverflow上所有相同的问题,它们要么是由于需求,要么是因为我已经定义了这两个问题的切入点。
即使我转到 Stackdriver ,也可以看到app engine:/
内的gunicorn文件夹:
gunicorn
gunicorn-19.9.0.dist-info
这是后端cloudbuild.yaml
文件:
steps:
- name: 'python:3.7'
entrypoint: python3
args: ['-m', 'pip', 'install', '-t', '.', '-r', 'requirements.txt']
- name: 'python:3.7'
entrypoint: python3
args: ['./manage.py', 'collectstatic', '--noinput']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy', '--version=prod']
如果任何人有任何解决方案或建议,我都会非常感激,因为我研究了互联网上几乎所有相同的问题。
谢谢
詹姆斯
答案 0 :(得分:1)
默认情况下,App Engine会在名为app的WSGI兼容对象的app目录的根目录中查找 selectedDate(event: any) {
var date = new Date(event),
mnth = ("0" + (this.utcdate.getUTCMonth() + 1)).slice(-2),
day = ("0" + date.getUTCDate()).slice(-2);
date.setMinutes(date.getMinutes() + date.getTimezoneOffset());
return [date.getUTCFullYear(), mnth, day].join("-");
}
文件。
文档here建议您在main.py
文件中指定入口点时,可以在gunicorn
文件中包含requirements.txt
,但是似乎要安装的版本与默认设置冲突。
要解决此问题,我建议您同时删除requirements.txt文件中的gunicorn依赖项和app.yaml中的入口点,并创建如下main.py文件:
app.yaml
这样,它可以恢复到上面说明的默认行为,并且应该可以正常工作。在官方sample code中也以这种方式实现。