Google Cloud Functions 和 Cloud SQL - 间歇性连接错误和 SQL 管理配额

问题描述 投票:0回答:1

我正在使用 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 速率限制。

有人知道如何在无服务器环境中解决这个问题吗?

google-cloud-functions google-cloud-sql
1个回答
0
投票

这看起来像是需要延迟刷新选项的经典案例。

TL;博士:

connector = Connector(refresh_strategy="lazy")
© www.soinside.com 2019 - 2024. All rights reserved.