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

时间:2019-04-12 06:26:03

标签: django google-app-engine google-cloud-platform web-deployment google-app-engine-python

我在使用Django将我的Google App Engine网络应用程序从https://graph.facebook.com/v3.2/{page_id}/conversations?access_token={page_access_token}切换到standard环境时遇到困难。由于我在应用中使用flex的模块pdf2image,因此我需要切换到flex环境。这是我的settings.py中的app.yaml,Dockerfile和代码片段。

注意:

  • 进行这些更改之前,应用程序应在本地运行
  • 可能存在多个错误,对于要修复哪些零件的任何反馈,我们将不胜感激。谢谢!

这是显示的错误:

poppler

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

app.yaml:

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)")

Dockerfile:

# [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]

settings.py:

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

3 个答案:

答案 0 :(得分:1)

您对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',
        }
    }

答案 1 :(得分:0)

没有为GAE Flexible设置

GAE_APPLICATION变量。请改用GAE_INSTANCE

答案 2 :(得分:0)

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

beta_settings:
  cloud_sql_instances: <INSTANCE_CONNECTION_NAME>