Task queues end up with "(2062, 'Cloud SQL socket open failed with error: No such file or directory')"

Task queues end up with "(2062, 'Cloud SQL socket open failed with error: No such file or directory')"

我们正在构建一个使用繁重后端任务(任务队列)的应用程序,并且在每个任务中 - 我们在 Google 云 SQL.[=14= 中执行 I/O ]

由于 GAE 对 12 个并发连接有限制(不确定这是否是问题?我在 看到)

""Each App Engine instance running in a Standard environment or using Standard-compatible APIs cannot have more than 12 concurrent connections to a Google Cloud SQL instance." - https://cloud.google.com/sql/faq"

我的大部分后端任务(每秒 100-500 个任务)都因为这个问题而失败。

此外,我检查了过去 4 天的活动连接:我没有看到任何连接超过 12 个连接。

那么,我需要采取什么方法来解决这个问题?连接池(如何在带有 GCS 的 GAE 中执行此操作?)?或其他一些修复?

非常感谢任何帮助 - 指导。 如果有人需要更多信息,请告诉我。

谢谢,

如果连接处理得当,您不太可能超过标准 Python App Engine 缩放设置的 12 个连接限制。

为了演示,我创建了一个 small application 来安排许多任务,每个任务获取一个数据库连接并做一些工作。我能够 运行 此测试而不会遇到连接问题。

值得确保的一件事是您没有泄漏任何连接(即在某些地方或发生异常时不关闭连接)。

对于 MySQLdb,您可以通过使用 contextlib:

中的 closing 来保证您没有泄漏连接
from contextlib import closing

def getDbConnection():
    return MySQLdb.connect(unix_socket='/cloudsql/instance_name', db='db', user='user', charset='utf8') 

with closing(getDbConnection()) as db:
    # do stuff, database is guaranteed to be closed