OperationalError:(2004,“无法创建TCP / IP套接字(13)”)

时间:2018-08-02 10:14:59

标签: google-app-engine flask google-cloud-platform mysql-python

在我的烧瓶项目的第一个连接上,App Engine出现以下错误: OperationalError:(2004,“无法创建TCP / IP套接字(13)”)

通过以下代码完成连接: db = MySQLdb.connect(CLOUDSQL_HOST,CLOUDSQL_USER,CLOUDSQL_PASSWORD,db_instance)

我不明白为什么我在本地计算机上使用dev_appserver.py的代码可以正常工作,但是在云上却无法工作。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在App Engine上运行时,必须使用App Engine本机UNIX套接字连接到Cloud SQL实例。因此,您可以在this example中使用类似内容:

if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
        cloudsql_unix_socket = os.path.join(
            '/cloudsql', CLOUDSQL_CONNECTION_NAME)

        db = MySQLdb.connect(
            unix_socket=cloudsql_unix_socket,
            user=CLOUDSQL_USER,
            passwd=CLOUDSQL_PASSWORD)
else:
    db = MySQLdb.connect(host='127.0.0.1', user=CLOUDSQL_USER, passwd=CLOUDSQL_PASSWORD)

您可以从控制台或使用命令CLOUDSQL_CONNECTION_NAME获取gcloud sql instances describe YOUR_INSTANCE字段。它将类似于: connectionName: YOUR-PROJECT:REGION-OF-THE-INSTANCE-INSTANCE-NAME