将Django应用程序部署到App Engine灵活环境

时间:2017-01-21 17:32:59

标签: python django google-app-engine gunicorn app-engine-flexible

我正在尝试根据sample app教程将this部署到Google App Engine灵活环境。然而,部署工作,应用程序无法启动。我收到以下错误消息:

Updating service [default]...failed.
ERROR: (gcloud.app.deploy) Error Response: [9]
Application startup error:
[2017-01-21 17:01:14 +0000] [5] [INFO] Starting gunicorn 19.6.0
[2017-01-21 17:01:14 +0000] [5] [INFO] Listening at: http://0.0.0.0:8080 (5)
[2017-01-21 17:01:14 +0000] [5] [INFO] Using worker: sync
[2017-01-21 17:01:14 +0000] [8] [INFO] Booting worker with pid: 8
[2017-01-21 17:01:14 +0000] [8] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/env/lib/python3.5/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
    worker.init_process()
  File "/env/lib/python3.5/site-packages/gunicorn/workers/base.py", line 126, in init_process
    self.load_wsgi()
  File "/env/lib/python3.5/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/env/lib/python3.5/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/env/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/env/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/env/lib/python3.5/site-packages/gunicorn/util.py", line 357, in import_app
    __import__(module)
ImportError: No module named 'mysite'
[2017-01-21 17:01:14 +0000] [8] [INFO] Worker exiting (pid: 8)
[2017-01-21 17:01:14 +0000] [5] [INFO] Shutting down: Master
[2017-01-21 17:01:14 +0000] [5] [INFO] Reason: Worker failed to boot.

正如你在GitHub上看到的那样(见上面的链接), /app.yaml 文件如下所示:

# [START runtime]
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT mysite.wsgi

beta_settings:
    cloud_sql_instances: <your-cloudsql-connection-string>

runtime_config:
  python_version: 3
# [END runtime]

/mysite/wsgi.py 文件如下:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

application = get_wsgi_application()

由于灵活环境处于测试阶段,我不确定这可能是一个错误。但是,我正在使用GitHub的原始应用程序,而不会在官方文档之后进行任何更改,因此我希望它可以正常工作。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

尝试:

app.yaml

(假设目录&#34; mysite&#34;与wsgi.py处于同一级别。如果app.yaml:$PORT wsgi:application处于同一级别,则只需:{{ 1}})

答案 1 :(得分:0)

感谢Adam(Google Group Forum上的Google Cloud Platform团队成员)提示文件可能未部署,我将Google Cloud SDK从138.0.0更新为141.0.0。现在一切正常,如教程中所述。

答案 2 :(得分:0)

确保满足您的要求,即将requirements.txt复制到项目的根目录

https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/appengine/flexible/django_cloudsql/requirements.txt

看起来像这样

Django==1.11.1
mysqlclient==1.3.10
wheel==0.29.0
gunicorn==19.7.1
psycopg2==2.7.1

并运行

pip install -r requirements.txt

然后gcloud app deploy