我正在使用 Google 文档中所述的语言连接器从 Python Cloud Function 连接到 Cloud SQL:
def connect_with_connector(connector: Connector) -> sqlalchemy.engine.base.Engine:
def getconn() -> pg8000.dbapi.Connection:
conn: pg8000.dbapi.Connection = connector.connect(
"instance",
"pg8000",
user="service-account",
db="db_name",
enable_iam_auth=True,
)
return conn
pool = sqlalchemy.create_engine(
"postgresql+pg8000://",
creator=getconn,
# ...
)
return pool
我从函数中传入连接器,然后使用 SQLAlchemy 执行语句,然后关闭池和连接:
pool.dispose()
connector.close()
从一开始,这对我来说似乎效率很低。现在它大部分时间都可以工作,但每隔几个小时,我就会收到一系列错误,我认为这些错误是由于建立了太多连接而引起的。它通常以
Broken Pipe
错误开始,然后是来自 Google Cloud SQL Admin API 的一系列 429 Rate Limit Reached
错误,这与我的(简单)云函数达到其内存限制相关。
我的云函数获得的调用量并不大,到目前为止我们还没有达到任何其他 API 速率限制。
有人知道如何在无服务器环境中解决这个问题吗?