Запуск небольшого веб-приложения в Google App Engine (гибкий) с использованием Python 3, Flask, SQLAlchemy, пакета psycopg2-binary и CloudSQL Postgres.Приложение правильно подключается к CloudSQL в моей локальной среде разработчика (я использую прокси-сервер), но при развертывании в облаке оно, похоже, не будет подключаться.
Работало нормально при первом развертывании на прошлой неделе.После установки обновления и повторного развертывания приложение больше не подключается к CloudSQL в облачной оболочке или при развертывании - даже после отката к предыдущей фиксации.Но он прекрасно подключается к моей локальной машине разработки с использованием прокси.
Я отладкой проверил, что необходимые учетные данные правильно вставлены в мой SQLALCHEMY_DATABASE_URI, а именно: postgres+psycopg2://[user]:[pw]@/[db_name]?host=/cloudsql/breadsheet:us-west1:breadsheet
.
Единственное изменение, которое я сделал на платформе с момента первоначального развертывания, было обновление с Cloud Datastore до Firestore, откуда я извлекаю переменные среды для создания URI.Данные никогда не поступали из хранилища данных, поэтому это не должно иметь значения.
Я следую руководству по подключению GAE Postgres для Unix.Вот мой app.yaml:
runtime: python
env: flex
instance_class: F1
entrypoint: gunicorn -w 1 breadsheet:breadapp
error_handlers:
- file: app/templates/errors/default_error.html
- error_code: over_quota
file: app/templates/errors/over_quota.html
beta_settings:
cloud_sql_instances: breadsheet:us-west1:breadsheet
Вот ошибка, когда я запускаю gunicorn из облачной оболочки:
(venv) [me]@cloudshell:~/breadsheet (breadsheet)$ gunicorn -w 1 breadsheet:breadapp
[2019-04-07 10:23:16 -0700] [471] [INFO] Starting gunicorn 19.9.0
[2019-04-07 10:23:16 -0700] [471] [INFO] Listening at: http://127.0.0.1:8000 (471)
[2019-04-07 10:23:16 -0700] [471] [INFO] Using worker: sync
[2019-04-07 10:23:16 -0700] [474] [INFO] Booting worker with pid: 474
2019-04-07 09:40:08,838 Exception on / [GET]
Traceback (most recent call last):
[...]
File "/home/[me]/breadsheet/venv/lib/python3.5/site-packages/sqlalchemy/engine/default.py", line 437, in connect
return self.dbapi.connect(*cargs, **cparams)
File "/home/[me]/breadsheet/venv/lib/python3.5/site-packages/psycopg2/__init__.py", line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/cloudsql/breadsheet:us-west1:breadsheet/.s.PGSQL.5432"?
The above exception was the direct cause of the following exception:
[line of code with the first database call in my app]
[...]
File "/home/[me]/breadsheet/venv/lib/python3.5/site-packages/psycopg2/__init__.py", line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/cloudsql/breadsheet:us-west1:breadsheet/.s.PGSQL.5432"?
Пробовал следующее (и больше!) Безрезультатно:
- Белый список различных IP-адресов в управлении CloudSQL
- Настройка разрешений IAM
- Использование nano для комментирования кода Firestore и жесткого кода URI
- Использование nano для жесткого кодирования SQLALCHEMY_DATABASE_URI в
env_variables
в моем app.yaml
Что попробовать дальше?