1 回答

TA贡献1856条经验 获得超11个赞
所以我终于想通了,如果不是通过 Cloud Scheduler 触发云功能,而是通过以下方式手动运行该功能Test Function
GCP 会给你引发的异常。就我而言,我的 Cloud MySQL 连接失败
Error: function terminated. Recommended action: inspect logs for termination reason. Details:
(pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '**.***.**.***' (timed out)")
(Background on this error at: http://sqlalche.me/e/e3q8)
所以我只需要引入一个环境变量来在通过代理和unix 套接字连接之间切换,如下所示:
if os.environ.get("ENV") == "local":
db = sqlalchemy.create_engine(
sqlalchemy.engine.url.URL(
drivername="mysql+pymysql",
username=os.environ.get("DB_USER"),
password=os.environ.get("DB_PASS"),
host=os.environ.get("DB_HOST"),
port=3306,
database=PRIMARY_TABLE_NAME
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800
)
else:
db = sqlalchemy.create_engine(
sqlalchemy.engine.url.URL(
drivername="mysql+pymysql",
username=os.environ.get("DB_USER"),
password=os.environ.get("DB_PASS"),
database=PRIMARY_TABLE_NAME,
query={"unix_socket": "/cloudsql/{}".format(os.environ.get("CLOUD_SQL_CONNECTION_NAME"))}
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800
)
添加回答
举报