【发布时间】:2021-03-31 11:09:45
【问题描述】:
我正在尝试在标准 Python3.8 环境中的 Google App Engine 上部署 Django 应用程序。我按照this document 中的所有步骤进行操作。应用程序在我的本地使用谷歌云数据库运行良好。但是我收到502 Bad Gateway 错误访问Web Url。我发现了很多不同的问题,但是技术正在发生很大的变化,到目前为止,它们都没有帮助。最后,我今天遇到了this solution,但它说创建一个我在谷歌文档中从未见过的gcloud.py 文件,这就是我没有应用该解决方案但决定问你的原因。
访问页面时出现此错误
Traceback (most recent call last):
_find_and_load (<frozen importlib._bootstrap>)
这是错误的堆栈跟踪:
File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked: ModuleNotFoundError: No module named 'main'
at _find_and_load (<frozen importlib._bootstrap>:991)
at _gcd_import (<frozen importlib._bootstrap>:1014)
at import_module (/opt/python3.8/lib/python3.8/importlib/__init__.py:127)
at import_app (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/util.py:358)
at load_wsgiapp (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py:39)
at load (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py:49)
at wsgi (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/app/base.py:67)
at load_wsgi (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/workers/base.py:144)
at init_process (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/workers/base.py:119)
at init_process (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/workers/gthread.py:92)
at spawn_worker (/layers/google.python.pip/pip/lib/python3.8/site-packages/gunicorn/arbiter.py:583)
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: python38
handlers:
# This configures Google App Engine to serve the files in the app's
# static directory.
- url: /static
static_dir: static/
# This handler routes all requests not caught above to the main app.
# It is required when static routes are defined, but can be omitted
# (along with the entire handlers section) when there are no static
# files defined.
- url: /.*
script: auto
这是settings.py。我尝试使用注释行,但仍然出现相同的错误。
STATIC_URL = '/static/'
STATIC_ROOT = 'static'
# STATIC_ROOT = os.path.join(BASE_DIR, '/static/')
# STATICFILES_DIRS = (
# os.path.join(BASE_DIR, 'static'),
# )
# MEDIA_URL = '/media/'
# MEDIA_ROOT = os.path.join(BASE_DIR, "media")
# STATICFILES_FINDERS = [
# 'django.contrib.staticfiles.finders.FileSystemFinder',
# 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# ]
appengine_config.py
from google.appengine.ext import vendor
vendor.add('lib')
我的 lib 文件夹中有这 2 个库。我从 env 文件夹中手动移动了它们。
django
MySQLdb
【问题讨论】:
-
我实际上尝试了第一个链接,但没有成功,但我会继续尝试不同版本的第一个链接。顺便说一句,即使在 app.yaml 中更改了行之后,也必须像往常一样进行部署,或者是否有其他方法可以仅部署更改。
-
不可能只上传更改,您必须在进行更改时上传和部署所有内容
标签: python python-3.x django google-app-engine