App Engine Standard上的Python 3 Django:应用无法启动

时间:2018-09-20 02:14:11

标签: django python-3.x google-app-engine gunicorn

我正在尝试在标准Python37环境中的Google App Engine上部署Django应用程序。我已经在Flexible环境中运行了一个很好的版本,但是我正在创建一个要在Standard env中运行的登台版本。

当我部署并访问该应用程序时,出现500错误。在日志中查看,我可以看到一些有关工作进程异常的消息。我收到错误消息:

  

ModuleNotFoundError:没有名为“ main”的模块

这是错误的堆栈跟踪:

  

回溯(最近通话最近一次):

     

spawn_worker中的文件“ /env/lib/python3.7/site-packages/gunicorn/arbiter.py”,第583行   worker.init_process()

     

init_process中的文件“ /env/lib/python3.7/site-packages/gunicorn/workers/gthread.py”,第104行   超级(ThreadWorker,self).init_process()

     

init_process中的文件“ /env/lib/python3.7/site-packages/gunicorn/workers/base.py”,第129行   self.load_wsgi()

     

文件“ /env/lib/python3.7/site-packages/gunicorn/workers/base.py”,行138,位于load_wsgi中   self.wsgi = self.app.wsgi()

     

wsgi中的文件“ /env/lib/python3.7/site-packages/gunicorn/app/base.py”,第67行   self.callable = self.load()

     

文件“ /env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py”,第52行,已加载   返回self.load_wsgiapp()

     

load_wsgiapp中的文件“ /env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py”,第41行   返回util.import_app(self.app_uri)

     

import_app中的文件“ /env/lib/python3.7/site-packages/gunicorn/util.py”,第350行   导入(模块)

     

ModuleNotFoundError:没有名为“ main”的模块

自从Django为我创建my_site/wsgi.py以来,我还没有修改它,这里是:

import os

from django.core.wsgi import get_wsgi_application

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

application = get_wsgi_application()

这是我的app.yaml

runtime: python37
env: standard

beta_settings:
    cloud_sql_instances: project:us-west1:sql-instance

handlers:
- url: /static
  static_dir: staticfiles/
- url: .*
  secure: always
  redirect_http_response_code: 301
  script: my_site.wsgi.application

env_variables:
  # vars

这与https://cloud.google.com/python/django/appengine中的app.yaml非常接近。 我还尝试将script更改为auto,如下所示:https://cloud.google.com/appengine/docs/standard/python3/config/appref,但仍然遇到相同的错误。

我已经看过这个问题:Django - gunicorn on App Engine. Error: 'No Module Named my_project',而my_site确实有下划线,但不是驼峰式的。

我不确定此错误的根源是什么。任何想法将不胜感激。

2 个答案:

答案 0 :(得分:8)

您可能需要将entrypoint添加到您的app.yaml

runtime: python37
entrypoint: gunicorn -b :8080 my_site.wsgi

...(remaining parts of your app.yaml)

参考: https://cloud.google.com/appengine/docs/standard/python3/runtime

答案 1 :(得分:0)

您也可以在没有入口点的情况下部署它,但是您的应用程序对象必须位于根目录的main.py文件中。

检查此类部署here的示例说明