在Google应用程序引擎python+;谷歌云SQL?

在Google应用程序引擎python+;谷歌云SQL?,python,google-app-engine,google-cloud-sql,app-engine-flexible,Python,Google App Engine,Google Cloud Sql,App Engine Flexible,我在Google app Engine上有一个运行中的Python3应用程序(灵活)连接到Google Cloud SQL上的Postgres。我通过它工作,在某个点上,您通过psycopg2连接到这样的数据库说明符 postgresql://postgres:password@/dbname?host=/cloudsql/project:us-central1:dbhost 我试图理解主机名/cloudsql/project:us-central1:dbhost是如何工作的。谷歌称之为“实例

我在Google app Engine上有一个运行中的Python3应用程序(灵活)连接到Google Cloud SQL上的Postgres。我通过它工作,在某个点上,您通过psycopg2连接到这样的数据库说明符

postgresql://postgres:password@/dbname?host=/cloudsql/project:us-central1:dbhost
我试图理解主机名
/cloudsql/project:us-central1:dbhost
是如何工作的。谷歌称之为“实例连接字符串”,它看起来像是在扮演普通主机名的角色。仅在使用
/
时,它不是DNS解析程序的有效名称


Google灵活的Python环境是否进行了修改,以支持这样的特殊主机名?它看起来像股票Python 3和psycopg2,但也许它被修改了?如果是,这些修改是否记录在任何地方?您对此一无所知。

事实证明,
host=/cloudsql/project:us-central1:dbhost
指定了文件系统中的目录名。该目录中有一个名为
.s.PGSQL.5432
的文件,它是一个Unix域套接字。的实例正在侦听该Unix域套接字,并通过TCP将数据库请求转发到实际的数据库服务器。尽管DB连接字符串是
host=
,但它实际上命名了一个包含Unix套接字的目录;这是Postgres连接库的一个功能


非常感谢您在评论中快速回答我的问题,在这里为未来的读者写下更完整的答案。

这是一个由云SQL代理支持的UNIX套接字。哦,这是有道理的!因此,在appengine机器上有一个名为
/cloudsql/project:us-central1-dbhost
的实际文件(socket)?是的,您可以通过SSH连接到一个灵活的虚拟机中并亲自查看:)很好,谢谢!你已经回答了我的问题。如果你不想写一个完整的答案,我有一些额外的参考资料,我会自己写。请随意写一个答案,我没有足够的时间写一个好的答案。