【问题标题】:Python 3 Django on App Engine Standard: App Fails to StartApp Engine Standard 上的 Python 3 Django:应用程序无法启动
【发布时间】:2019-02-24 06:16:47
【问题描述】:

我正在尝试在标准 Python37 环境中的 Google App Engine 上部署 Django 应用程序。我有一个在灵活环境中运行良好的版本,但我正在创建一个我想在标准环境中运行的暂存版本。

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

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

这是错误的堆栈跟踪:

Traceback(最近一次调用最后一次):

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

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

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

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

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

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

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

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

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

这与app.yaml 中的https://cloud.google.com/python/django/appengine 非常接近。 我也尝试将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 确实有一个下划线,但不是驼峰式。

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

【问题讨论】:

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


    【解决方案1】:

    您可能需要将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

    【讨论】:

    • 就是这样。我相信这是因为我在 requirements.txt 中包含了 gunicorn 但没有明确设置入口点
    【解决方案2】:

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

    查看此类部署的示例描述here

    【讨论】:

    • 欢迎来到 Stack Overflow。鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及它为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。 How to Answer。谢谢。
    猜你喜欢
    • 2019-09-05
    • 2020-12-04
    • 2018-02-06
    • 1970-01-01
    • 2015-05-10
    • 2018-07-19
    • 1970-01-01
    • 2019-09-03
    • 2017-05-21
    相关资源
    最近更新 更多