[英]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)")
以下是我们的相关代码片段:
应用程序.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]
文件:
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
设置.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 Flexible 设置GAE_APPLICATION
变量。 请改用GAE_INSTANCE
。
对于生产,您需要在 app.yaml 中使用以下内容:
beta_settings:
cloud_sql_instances: <INSTANCE_CONNECTION_NAME>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.