无法连接到服务器错误 Google App Engine 静态文件问题

Can't connect to server error Google App Engine Static Files Issue

我在使用 Django 将我的 Google App Engine 网络应用程序从 standard 环境切换到 flex 环境时遇到困难。我需要切换到 flex 环境,因为我在我的应用程序中使用模块 pdf2image,它使用 poppler。这是我的 app.yaml、Dockerfile 和我的 settings.py 中的片段。

注:

这是显示的错误:

File "/env/lib/python3.7/site-packages/MySQLdb/__init__.py", line 84, in Connect return Connection(*args, **kwargs) 
File "/env/lib/python3.7/site-packages/MySQLdb/connections.py", line 164, in __init__ super(Connection, self).__init__(*args, **kwargs2) django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' (111)")

以下是我们的相关代码片段:

app.yaml:

# [START django_app]
runtime: custom
env: flex
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
# [END django_app]

Docker 文件:

FROM gcr.io/google-appengine/python

# Create a virtualenv for dependencies. This isolates these packages from
# system-level packages.
# Use -p python3 or -p python3.7 to select python version. Default is version 2.
RUN apt-get update
RUN apt-get install poppler-utils --assume-yes
RUN virtualenv -p python3.7 /env

# Setting these environment variables are the same as running
# source /env/bin/activate.
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH

# Copy the application's requirements.txt and run pip to install all
# dependencies into the virtualenv.
ADD requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt

# Add the application source code.
ADD . /app

# Run a WSGI server to serve the application. gunicorn must be declared as
# a dependency in requirements.txt.
CMD gunicorn -b :$PORT main:app

settings.py:

# STATIC_URL = 'https://storage.googleapis.com/tulaibucket/static/'

if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so use a Google Cloud SQL database.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': ‘MYHOST’,
            'USER': ‘MYUSER’,
            'PASSWORD': ‘MYPASSWORD’,
            'NAME': ‘DBNAME’,
        }
    }
else:
    # Running in development, so use a local MySQL database.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME’: ‘DBNAME’,
            'USER': ‘MYUSER’,
            'PASSWORD': ‘MYPASSWORD’,
        }
    }

settings.py 中的引号有问题,文件应如下所示:

# STATIC_URL = 'https://storage.googleapis.com/tulaibucket/static/'

if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so use a Google Cloud SQL database.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': 'MYHOST',
            'USER': 'MYUSER',
            'PASSWORD': 'MYPASSWORD',
            'NAME': 'DBNAME',
        }
    }
else:
    # Running in development, so use a local MySQL database.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': 'DBNAME',
            'USER': 'MYUSER',
            'PASSWORD': 'MYPASSWORD',
        }
    }

GAE_APPLICATION 变量没有为 GAE Flexible 设置。请改用 GAE_INSTANCE

对于生产,您需要在 app.yaml 中使用以下内容:

beta_settings:
  cloud_sql_instances: <INSTANCE_CONNECTION_NAME>