Ошибка подключения Django к базе данных Google CloudSQL Postgres в Google App Engine

Я оцениваю использование 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]

и иметь это require.py:

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

2 ответа

Решение

Не берите в голову, похоже, что Google исправил что-то с их стороны, и сервис теперь работает. Я пытаюсь выяснить, что именно изменилось...

Я боролся с этим часами, и единственный способ исправить это - создать новый экземпляр Postgres. К сожалению, грубой силой, но иногда кажется, что экземпляры в GCP могут начинаться в коррумпированном состоянии и никогда не будут работать.

Другие вопросы по тегам