将Django连接到Google App Engine中的Google CloudSQL Postgres数据库时出错

时间:2017-03-16 14:28:50

标签: python postgresql google-app-engine google-cloud-sql google-app-engine-python

我正在使用Google Cloud和Google App Engine评估我们公司的新产品。我尝试使用Postgres而不是MySQL来修改本教程:

https://cloud.google.com/python/django/flexible-environment

虽然我能够在本地成功连接到数据库,但在我尝试生产时,我收到以下500错误:

OperationalError at /admin/login/
    could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/cloudsql/<project_name_hidden>:us-central1:<database_id_hidden>/.s.PGSQL.5432"?

要连接到Postgres,我对示例项目进行了三处更改。我在app.yaml中有这个片段:

beta_settings:
  cloud_sql_instances: <project_name_hidden>:us-central1:<database_id_hidden>

我在settings.py中有这个代码:

# [START dbconfig]
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'polls',
        'USER': '<db_user_name_hidden>',
        'PASSWORD': '<db_password_hidden>',
        'PORT': '5432',
    }
}
# In the flexible environment, you connect to CloudSQL using a unix socket.
# Locally, you can use the CloudSQL proxy to proxy a localhost connection
# to the instance
DATABASES['default']['HOST'] = '/cloudsql/<project_name_hidden>:us-central1:<database_id_hidden>'
if os.getenv('GAE_INSTANCE'):
    pass
else:
    DATABASES['default']['HOST'] = '127.0.0.1'
# [END dbconfig]

并且有这个requirements.py:

Django==1.10.6
#mysqlclient==1.3.10
psycopg2==2.7.1
wheel==0.29.0
gunicorn==19.7.0

2 个答案:

答案 0 :(得分:7)

没关系,似乎谷歌在他们的终端上修了一些东西,现在服务正在运转。我试图找出确切变化的内容......

答案 1 :(得分:0)

我为此奋斗了几个小时,唯一的解决方法是创建一个新的Postgres实例。不幸的是,蛮力行事,但似乎有时GCP上的实例可能会以损坏的状态开始,并且永远无法正常工作。